use DATABASE_NAME
若是數據庫不存在,則建立數據庫,不然切換到指定數據庫。sql
> use Hero switched to db Hero > db Hero >
若是你想查看全部數據庫,可使用 show dbs 命令:mongodb
> show dbs admin 0.000GB config 0.000GB local 0.000GB >
能夠看到,咱們剛建立的數據庫 Hero並不在數據庫的列表中, 要顯示它,咱們須要向Hero數據庫插入一些數據。數據庫
> db.Hero.insert({"h_name":"李白","h_skill":"青蓮劍歌"}) WriteResult({ "nInserted" : 1 }) > show dbs Hero 0.000GB admin 0.000GB config 0.000GB local 0.000GB >
MongoDB 中默認的數據庫爲 test,若是你沒有建立新的數據庫,集合將存放在 test 數據庫中。數據結構
注意: 在 MongoDB 中,集合只有在內容插入後纔會建立! 就是說,建立集合(數據表)後要再插入一個文檔(記錄),集合纔會真正建立。app
db.dropDatabase()
刪除當前數據庫,默認爲 test,你可使用 db 命令查看當前數據庫名。函數
如下咱們刪除數據庫Hero爲例,首先,查看全部數據庫:spa
> show dbs
Hero 0.000GB
admin 0.000GB
config 0.000GB
local 0.000GB
>
接下來咱們切換到數據庫Hero:code
> use Hero
switched to db Hero
>
執行刪除命令:對象
> db.dropDatabase() { "dropped" : "Hero", "ok" : 1 } >
最後,咱們再經過 show dbs 命令數據庫是否刪除成功:blog
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
>
MongoDB 中使用 createCollection() 方法來建立集合。語法格式:
db.createCollection(name, options)
參數說明:
options 能夠是以下參數:
在插入文檔時,MongoDB 首先檢查固定集合的 size 字段,而後檢查 max 字段。
> use Hero switched to db Hero > db.createCollection("heros") { "ok" : 1 } >
若是要查看已有集合,可使用 show collections 或 show tables 命令:
> show collections heros > show tables heros >
下面是帶有幾個關鍵參數的 createCollection() 的用法:
建立固定集合my_hero,整個集合空間大小10240KB, 文檔最大個數爲 10000 個。
> db.createCollection("my_hero",{capped:true,size:10240,max:10000}) { "ok" : 1 } >
在 MongoDB 中,你不須要建立集合。當你插入一些文檔時,MongoDB 會自動建立集合。
> db.Hero2.insert({"name":"my_hero2"}) WriteResult({ "nInserted" : 1 }) > show collections Hero2 my_hero >
MongoDB 中使用 drop() 方法來刪除集合。語法格式:
db.collectionName.drop()
返回值:若是成功刪除選定集合,則 drop() 方法返回 true,不然返回 false。
實例:刪除Hero數據庫中的my_hero集合
> use Hero switched to db Hero > show collections heros my_hero > db.my_hero.drop() true >
驗證
> show collections
heros
文檔的數據結構和 JSON 基本同樣。
全部存儲在集合中的數據都是 BSON 格式。
BSON 是一種相似 JSON 的二進制形式的存儲格式,是 Binary JSON 的簡稱。
db.COLLECTION_NAME.insert(document)
> use Hero switched to db Hero > show collections heros > db.heros2.save({x:10}) WriteResult({ "nInserted" : 1 }) > show collections heros heros2
MongoDB 使用 update() 和 save() 方法來更新集合中的文檔。
db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> } )
參數說明:
> db.heros.insert({h_name:"李白",h_skill:"青蓮劍歌"}) WriteResult({ "nInserted" : 1 })
接着咱們經過 update() 方法來更新技能:
> db.heros.update({"h_skill":"青蓮劍歌"},{$set:{"h_skill":"神來之筆"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.heros.find() { "_id" : ObjectId("5d2d79034a7e85480a44bddb"), "h_name" : "李白", "h_skill" : "神來之筆" }
db.collection.save( <document>, { writeConcern: <document> } )
參數說明:
> db.heros.save({"_id":ObjectId("5d2d79034a7e85480a44bddb"),"h_name":"韓信","h_skill":"國士無雙"}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.heros.find() { "_id" : ObjectId("5d2d79034a7e85480a44bddb"), "h_name" : "韓信", "h_skill" : "國士無雙" }
MongoDB remove()函數是用來移除集合中的數據。在執行remove()函數前先執行find()命令來判斷執行的條件是否正確,這是一個比較好的習慣。
db.collection.remove( <query>, <justOne> )
若是你的 MongoDB 是 2.6 版本之後的,語法格式以下:
db.collection.remove( <query>, { justOne: <boolean>, writeConcern: <document> } )
參數說明:
實例:咱們把上面修改成韓信的數據刪除
> db.heros.remove({"h_name":"韓信"}) WriteResult({ "nRemoved" : 1 }) > db.heros.find() #查找已經沒有數據了 >
MongoDB 查詢文檔使用 find() 方法。find() 方法以非結構化的方式來顯示全部文檔。
db.collection.find(query, projection)
若是你須要以易讀的方式來讀取數據,可使用 pretty() 方法,語法格式以下:
>db.col.find().pretty()
咱們先往heros集合中插入兩條數據做爲查詢對象
> db.heros.insert({h_name:"李白",h_skill:"青蓮劍歌",h_attack:1000,h_blood:1500}) WriteResult({ "nInserted" : 1 }) > db.heros.insert({h_name:"韓信",h_skill:"國士無雙",h_attack:800,h_blood:1200}) WriteResult({ "nInserted" : 1 }) > db.heros.find() { "_id" : ObjectId("5d2d8887a77ffd067ee1ebc6"), "h_name" : "李白", "h_skill" : "青蓮劍歌", "h_attack" : 1000, "h_blood" : 1500 } { "_id" : ObjectId("5d2d88a2a77ffd067ee1ebc7"), "h_name" : "韓信", "h_skill" : "國士無雙", "h_attack" : 800, "h_blood" : 1200 } > db.heros.find().pretty() { "_id" : ObjectId("5d2d8887a77ffd067ee1ebc6"), "h_name" : "李白", "h_skill" : "青蓮劍歌", "h_attack" : 1000, "h_blood" : 1500 } { "_id" : ObjectId("5d2d88a2a77ffd067ee1ebc7"), "h_name" : "韓信", "h_skill" : "國士無雙", "h_attack" : 800, "h_blood" : 1200 } >
除了 find() 方法以外,還有一個 findOne() 方法,它只返回一個文檔。
例如:查詢攻擊力大於800的
> db.heros.find({h_attack:{$gt:800}}).pretty() { "_id" : ObjectId("5d2d8887a77ffd067ee1ebc6"), "h_name" : "李白", "h_skill" : "青蓮劍歌", "h_attack" : 1000, "h_blood" : 1500 } >
查詢攻擊力大於等於800的
> db.heros.find({h_attack:{$gte:800}}).pretty() { "_id" : ObjectId("5d2d8887a77ffd067ee1ebc6"), "h_name" : "李白", "h_skill" : "青蓮劍歌", "h_attack" : 1000, "h_blood" : 1500 } { "_id" : ObjectId("5d2d88a2a77ffd067ee1ebc7"), "h_name" : "韓信", "h_skill" : "國士無雙", "h_attack" : 800, "h_blood" : 1200 }
MongoDB 的 find() 方法能夠傳入多個鍵(key),每一個鍵(key)以逗號隔開,即常規 SQL 的 AND 條件。
語法格式以下:
>db.col.find({key1:value1, key2:value2}).pretty()
例如:查詢攻擊力大於800,而且血量大於1200的
> db.heros.find({"h_attack":{$gt:800},"h_blood":{$gt:1200}}).pretty() { "_id" : ObjectId("5d2d8887a77ffd067ee1ebc6"), "h_name" : "李白", "h_skill" : "青蓮劍歌", "h_attack" : 1000, "h_blood" : 1500 } >
MongoDB OR 條件語句使用了關鍵字 $or,語法格式以下:
>db.col.find( { $or: [ {key1: value1}, {key2:value2} ] } ).pretty()
例如:查詢攻擊力大於800或者血量大於1000的
db.heros.find({$or:[{h_attack:{$gt:800}},{h_blood:{$gt:1000}}]}).pretty() { "_id" : ObjectId("5d2d8887a77ffd067ee1ebc6"), "h_name" : "李白", "h_skill" : "青蓮劍歌", "h_attack" : 1000, "h_blood" : 1500 } { "_id" : ObjectId("5d2d88a2a77ffd067ee1ebc7"), "h_name" : "韓信", "h_skill" : "國士無雙", "h_attack" : 800, "h_blood" : 1200 } >
$type操做符是基於BSON類型來檢索集合中匹配的數據類型,並返回結果。
MongoDB 中可使用的類型以下表所示:
首先咱們在heros裏面插入一條數據其h_name爲一個數字
> db.heros.insert({h_name:7,h_skill:6,h_attack:1300,h_blood:900}) WriteResult({ "nInserted" : 1 }) > db.heros.find().pretty() { "_id" : ObjectId("5d2d8887a77ffd067ee1ebc6"), "h_name" : "李白", "h_skill" : "青蓮劍歌", "h_attack" : 1000, "h_blood" : 1500 } { "_id" : ObjectId("5d2d88a2a77ffd067ee1ebc7"), "h_name" : "韓信", "h_skill" : "國士無雙", "h_attack" : 800, "h_blood" : 1200 } { "_id" : ObjectId("5d2d9e4fa77ffd067ee1ebc8"), "h_name" : 7, "h_skill" : 6, "h_attack" : 1300, "h_blood" : 900 }
而後使用type查詢h_name爲字符串類型的
> db.heros.find({h_name:{$type:2}}) { "_id" : ObjectId("5d2d8887a77ffd067ee1ebc6"), "h_name" : "李白", "h_skill" : "青蓮劍歌", "h_attack" : 1000, "h_blood" : 1500 } { "_id" : ObjectId("5d2d88a2a77ffd067ee1ebc7"), "h_name" : "韓信", "h_skill" : "國士無雙", "h_attack" : 800, "h_blood" : 1200 }
或者:
> db.heros.find({h_name:{$type:"string"}}) { "_id" : ObjectId("5d2d8887a77ffd067ee1ebc6"), "h_name" : "李白", "h_skill" : "青蓮劍歌", "h_attack" : 1000, "h_blood" : 1500 } { "_id" : ObjectId("5d2d88a2a77ffd067ee1ebc7"), "h_name" : "韓信", "h_skill" : "國士無雙", "h_attack" : 800, "h_blood" : 1
若是你須要在MongoDB中讀取指定數量的數據記錄,可使用MongoDB的Limit方法,limit()方法接受一個數字參數,該參數指定從MongoDB中讀取的記錄條數。
語法:limit()方法基本語法以下所示:
>db.COLLECTION_NAME.find().limit(NUMBER)
例如:咱們要查詢heros集合裏面的數據,限制每次查詢兩條
> db.heros.find().limit(2) { "_id" : ObjectId("5d2d8887a77ffd067ee1ebc6"), "h_name" : "李白", "h_skill" : "青蓮劍歌", "h_attack" : 1000, "h_blood" : 1500 } { "_id" : ObjectId("5d2d88a2a77ffd067ee1ebc7"), "h_name" : "韓信", "h_skill" : "國士無雙", "h_attack" : 800, "h_blood" : 1200 }
若是沒有指定limit()方法中的參數則顯示集合中的全部數據。
咱們除了可使用limit()方法來讀取指定數量的數據外,還可使用skip()方法來跳過指定數量的數據,skip方法一樣接受一個數字參數做爲跳過的記錄條數。
>db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
例如:查詢每次查詢兩條,跳過第一條查詢
> db.heros.find().limit(2).skip(1) { "_id" : ObjectId("5d2d88a2a77ffd067ee1ebc7"), "h_name" : "韓信", "h_skill" : "國士無雙", "h_attack" : 800, "h_blood" : 1200 } { "_id" : ObjectId("5d2d9e4fa77ffd067ee1ebc8"), "h_name" : 7, "h_skill" : 6, "h_attack" : 1300, "h_blood" : 900 } >
在 MongoDB 中使用 sort() 方法對數據進行排序,sort() 方法能夠經過參數指定排序的字段,並使用 1 和 -1 來指定排序的方式,其中 1 爲升序排列,而 -1 是用於降序排列。
>db.COLLECTION_NAME.find().sort({KEY:1})
例如:對heros集合的attack字段按照升序排列
> db.heros.find().sort({"h_attack":1}).pretty() { "_id" : ObjectId("5d2d88a2a77ffd067ee1ebc7"), "h_name" : "韓信", "h_skill" : "國士無雙", "h_attack" : 800, "h_blood" : 1200 } { "_id" : ObjectId("5d2d8887a77ffd067ee1ebc6"), "h_name" : "李白", "h_skill" : "青蓮劍歌", "h_attack" : 1000, "h_blood" : 1500 } { "_id" : ObjectId("5d2d9e4fa77ffd067ee1ebc8"), "h_name" : 7, "h_skill" : 6, "h_attack" : 1300, "h_blood" : 900 } >
db.集合名稱.find({},{字段名稱:1,...})
例1
> db.heros.find({},{h_name:1}) { "_id" : ObjectId("5d2dfd80614bec7ca468778e"), "h_name" : "李白" } { "_id" : ObjectId("5d2dfd8f614bec7ca468778f"), "h_name" : "韓信" }
例2
> db.heros.find({},{_id:0,h_name:1}) { "h_name" : "李白" } { "h_name" : "韓信" }