一、MongoDB - 連接
1.啟動 MongoDB 服務
????只需要在 MongoDB 安裝目錄的 bin 目錄下執行 mongod 即可
????執行啟動操作后,mongodb 在輸出一些必要信息后不會輸出任何信息,之后就等待連接的建立,當連接被建立后,就會開始打印日志信息。
可以使用 MongoDB shell 來連接 MongoDB 服務器,可以使用 PHP 來連接 MongoDB。
標準 URI 連接語法:
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
mongodb:// 這是固定的格式,必須要指定。
username:password@ 可選項,如果設置,在連接數據庫服務器之后,驅動都會嘗試登陸這個數據庫
host1 必須的指定至少一個host, host1 是這個URI唯一要填寫的。它指定了要連接服務器的地址。如果要連接復制集,請指定多個主機地址。
portX 可選的指定端口,如果不填,默認為27017
/database 如果指定username:password@,連接并驗證登陸指定數據庫。若不指定,默認打開 test 數據庫。
?options 是連接選項。如果不使用/database,則前面需要加上/。所有連接選項都是鍵值對name=value,鍵值對之間通過&或;(分號)隔開
2.實例
使用默認端口來連接 MongoDB 的服務。
mongodb://localhost
通過 shell 連接 MongoDB 服務:
$?./mongoMongoDB?shell?version:?3.0.6connecting?to:?test...
這時候你返回查看運行 ./mongod 命令的窗口,可以看到是從哪里連接到MongoDB的服務器
MongoDB 連接命令格式
使用用戶名和密碼連接到 MongoDB 服務器,你必須使用 'username:password@hostname/dbname' 格式,'username'為用戶名,'password' 為密碼。
使用用戶名和密碼連接登陸到默認數據庫:
$?./mongoMongoDB?shell?version:?3.0.6connecting?to:?test
使用用戶 admin 使用密碼 123456 連接到本地的 MongoDB 服務上。輸出結果如下所示:
>?mongodb://admin:123456@localhost/...
使用用戶名和密碼連接登陸到指定數據庫,格式如下:
mongodb://admin:123456@localhost/test
二、MongoDB 數據庫
MongoDB 創建數據庫
語法
MongoDB 創建數據庫的語法格式如下:
use?DATABASE_NAME
如果數據庫不存在,則創建數據庫,否則切換到指定數據庫。
實例
以下實例我們創建了數據庫cara
> use cara
switched to db cara
> db
cara
>
如果你想查看所有數據庫,可以使用 show dbs 命令:
> show dbs
admin?? 0.000GB
config? 0.000GB
local?? 0.000GB
>
可以看到,我們剛創建的數據庫 cara 并不在數據庫的列表中, 要顯示它,我們需要向 cara 數據庫插入一些數據。
> db.cara.insert({"name":"歡子"})
WriteResult({ "nInserted" : 1 })
> show dbs
admin?? 0.000GB
cara??? 0.000GB
config? 0.000GB
local?? 0.000GB
>
MongoDB 中默認的數據庫為 test,如果你沒有創建新的數據庫,集合將存放在 test 數據庫中。
MongoDB 刪除數據庫
語法
MongoDB 刪除數據庫的語法格式如下:
db.dropDatabase()
刪除當前數據庫,默認為 test,你可以使用 db 命令查看當前數據庫名。
實例
以下實例我們刪除了數據庫 cara。
首先,查看所有數據庫:
> show dbs
admin?? 0.000GB
cara??? 0.000GB
config? 0.000GB
local?? 0.000GB
>?
接下來我們切換到數據庫cara
> use cara
switched to db cara
執行刪除命令:
> db.dropDatabase()
{ "dropped" : "cara", "ok" : 1 }
最后,我們再通過 show dbs 命令數據庫是否刪除成功:
> show dbs
admin?? 0.000GB
config? 0.000GB
local?? 0.000GB
>
刪除集合
集合刪除語法格式如下:
db.collection.drop()
以下實例刪除了 cara 數據庫中的集合 cara:
> use cara
switched to db cara
> show tables
> db.cara.insert({"name":"歡子"})
WriteResult({ "nInserted" : 1 })
> show tables
cara
> db.cara.drop()
true
> show tables
>
三、MongoDB 集合
MongoDB 創建集合
MongoDB 中使用 createCollection() 方法來創建集合。
語法格式:
db.createCollection(name,?options)
參數說明:
name: 要創建的集合名稱
options: 可選參數, 指定有關內存大小及索引的選項
options 可以是如下參數:
在插入文檔時,MongoDB 首先檢查固定集合的 size 字段,然后檢查 max 字段。
實例
在 test 數據庫中創建 cara 集合:
> use test
switched to db test
> db.createCollection("cara")
{ "ok" : 1 }
>
如果要查看已有集合,可以使用 show collections 命令:
> show collections
cara
>
下面是帶有幾個關鍵參數的 createCollection() 的用法:
創建固定集合 ?mycol,整個集合空間大小 6142800 KB, 文檔最大個數為 10000 個。
>?db.createCollection("mycol",?{?capped?:?true,?autoIndexId?:?true,?size?:?6142800,?max?:?10000?}?){?"ok"?:?1?}>
在 MongoDB 中,你不需要創建集合。當你插入一些文檔時,MongoDB 會自動創建集合。
>?db.mycol2.insert({"name"?:?"菜鳥教程"})>?show?collections mycol2...
MongoDB 刪除集合
MongoDB 中使用 drop() 方法來刪除集合。
語法格式:
db.collection.drop()
參數說明:
無
返回值
如果成功刪除選定集合,則 drop() 方法返回 true,否則返回 false。
實例
在數據庫 test 中,我們可以先通過 show collections 命令查看已存在的集合:
> db
test
> show collections
cara
>
接著刪除集合 cara :
> db.cara.drop()
true
> show collections
>
從結果中可以看出 cara 集合已被刪除
四、MongoDB? 文檔
MongoDB ?插入文檔
插入文檔
MongoDB 使用 insert() 或 save() 方法向集合中插入文檔,語法如下:
db.COLLECTION_NAME.insert(document)
實例
以下文檔可以存儲在 MongoDB 的 cara 數據庫 的 col 集合中:
> db.col.insert({title:'study',
... description:'mongodb study',
... by:'cara',
... url:'http://cara.com',
... tags:['mongodb','database','NoSQL'],
... likes:101
... })
WriteResult({ "nInserted" : 1 })
>
以上實例中 col 是我們的集合名,如果該集合不在該數據庫中, MongoDB 會自動創建該集合并插入文檔。
查看已插入文檔:
> db.col.find()
{ "_id" : ObjectId("5b553cd97dc80c93e5d47b35"), "title" : "study", "description" : "mongodb study", "by" : "cara", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 101 }
>
我們也可以將數據定義為一個變量,如下所示:
> document=({title:'study',
... description:'mongodb study',
... by:'cara',
... url:'http://cara.com',
... tags:['mongodb','database','NoSQL'],
... likes:101
... })
{
?? ?"title" : "study",
?? ?"description" : "mongodb study",
?? ?"by" : "cara",
?? ?"url" : "http://cara.com",
?? ?"tags" : [
?? ??? ?"mongodb",
?? ??? ?"database",
?? ??? ?"NoSQL"
?? ?],
?? ?"likes" : 101
}
>
執行插入操作:
> db.col.insert(document)
WriteResult({ "nInserted" : 1 })
再次查看
> db.col.find()
{ "_id" : ObjectId("5b553cd97dc80c93e5d47b35"), "title" : "study", "description" : "mongodb study", "by" : "cara", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 101 }
{ "_id" : ObjectId("5b553e1a7dc80c93e5d47b36"), "title" : "study", "description" : "mongodb study", "by" : "cara", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 101 }
>
MongoDB 更新文檔
MongoDB 使用 update() 和 save() 方法來更新集合中的文檔。
update() 方法
update() 方法用于更新已存在的文檔。語法格式如下:
db.collection.update(<query>,<update>,{upsert:?<boolean>,multi:?<boolean>,writeConcern:?<document>})
參數說明:
query : update的查詢條件,類似sql update查詢內where后面的。
update : update的對象和一些更新的操作符(如$,$inc...)等,也可以理解為sql update查詢內set后面的
upsert : 可選,這個參數的意思是,如果不存在update的記錄,是否插入objNew,true為插入,默認是false,不插入。
multi : 可選,mongodb 默認是false,只更新找到的第一條記錄,如果這個參數為true,就把按條件查出來多條記錄全部更新。
writeConcern :可選,拋出異常的級別。
之前在col集合中寫入了一些數據
現在我們通過 update() 方法來更新標題(title):
> db.col.update({'title':'study'},{$set:{'title':'mystudy'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.col.find().pretty()
{
?? ?"_id" : ObjectId("5b553cd97dc80c93e5d47b35"),
?? ?"title" : "mystudy",
?? ?"description" : "mongodb study",
?? ?"by" : "cara",
?? ?"url" : "http://cara.com",
?? ?"tags" : [
?? ??? ?"mongodb",
?? ??? ?"database",
?? ??? ?"NoSQL"
?? ?],
?? ?"likes" : 101
}
{
?? ?"_id" : ObjectId("5b553e1a7dc80c93e5d47b36"),
?? ?"title" : "study",
?? ?"description" : "mongodb study",
?? ?"by" : "cara",
?? ?"url" : "http://cara.com",
?? ?"tags" : [
?? ??? ?"mongodb",
?? ??? ?"database",
?? ??? ?"NoSQL"
?? ?],
?? ?"likes" : 101
}
>
可以看到標題(title)由原來的 "study" 更新為了 "mystudy"。
以上語句只會修改第一條發現的文檔,如果你要修改多條相同的文檔,則需要設置 multi 參數為 true。
>db.col.update({'title':'MongoDB?教程'},{$set:{'title':'MongoDB'}},{multi:true})
> db.col.update({'by':'cara'},{$set:{'by':'huanzi'}},{multi:true})
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
> db.col.find().pretty()
{
?? ?"_id" : ObjectId("5b553cd97dc80c93e5d47b35"),
?? ?"title" : "mystudy",
?? ?"description" : "mongodb study",
?? ?"by" : "huanzi",
?? ?"url" : "http://cara.com",
?? ?"tags" : [
?? ??? ?"mongodb",
?? ??? ?"database",
?? ??? ?"NoSQL"
?? ?],
?? ?"likes" : 101
}
{
?? ?"_id" : ObjectId("5b553e1a7dc80c93e5d47b36"),
?? ?"title" : "study",
?? ?"description" : "mongodb study",
?? ?"by" : "huanzi",
?? ?"url" : "http://cara.com",
?? ?"tags" : [
?? ??? ?"mongodb",
?? ??? ?"database",
?? ??? ?"NoSQL"
?? ?],
?? ?"likes" : 101
}
save() 方法
save() 方法通過傳入的文檔來替換已有文檔。語法格式如下:
db.collection.save(<document>,{writeConcern:?<document>})
參數說明:
document : 文檔數據。
writeConcern :可選,拋出異常的級別。
更多實例
只更新第一條記錄:
db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
全部更新:
db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
只添加第一條:
db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );
全部添加加進去:
db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );
全部更新:
db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );
只更新第一條記錄:
db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );
MongoDB 刪除文檔
MongoDB remove()函數是用來移除集合中的數據。
MongoDB數據更新可以使用update()函數。在執行remove()函數前先執行find()命令來判斷執行的條件是否正確,這是一個比較好的習慣。
語法
remove() 方法的基本語法格式如下所示:
db.collection.remove(<query>,<justOne>)
如果你的 MongoDB 是 2.6 版本以后的,語法格式如下:
db.collection.remove(<query>,{justOne:?<boolean>,writeConcern:?<document>})
參數說明:
query :(可選)刪除的文檔的條件。
justOne : (可選)如果設為 true 或 1,則只刪除一個文檔。
writeConcern :(可選)拋出異常的級別。
實例
之前我們執行兩次插入操作:
使用 find() 函數查詢數據:
> db.col.find()
{ "_id" : ObjectId("5b553cd97dc80c93e5d47b35"), "title" : "mystudy", "description" : "mongodb study", "by" : "huanzi", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 101 }
{ "_id" : ObjectId("5b553e1a7dc80c93e5d47b36"), "title" : "study", "description" : "mongodb study", "by" : "huanzi", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 101 }
>
接下來我們移除 by 為 'huanzi' 的文檔:
> db.col.remove({'by':'huanzi'})
WriteResult({?"nRemoved"?:?2?})#?刪除了兩條數
> db.col.find()
>?#?沒有數據
如果你只想刪除第一條找到的記錄可以設置 justOne 為 1,如下所示:
>db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
如果你想刪除所有數據,可以使用以下方式(類似常規 SQL ?的 truncate 命令):
>db.col.remove({}) >db.col.find() >
remove() 方法已經過時了,現在官方推薦使用 deleteOne() 和 deleteMany() 方法。
如刪除集合下全部文檔:
db.inventory.deleteMany({})
刪除 status 等于 A 的全部文檔:
db.inventory.deleteMany({?status?:?"A"?})
刪除 status 等于 D 的一個文檔:
db.inventory.deleteOne(?{?status:?"D"?}?)
MongoDB 查詢文檔
MongoDB 查詢文檔使用 find() 方法。
find() 方法以非結構化的方式來顯示所有文檔。
語法
MongoDB 查詢數據的語法格式如下:
db.collection.find(query,?projection)
query :可選,使用查詢操作符指定查詢條件
projection :可選,使用投影操作符指定返回的鍵。查詢時返回文檔中所有鍵值, 只需省略該參數即可(默認省略)。
如果你需要以易讀的方式來讀取數據,可以使用 pretty() 方法,語法格式如下:
>db.col.find().pretty()
pretty() 方法以格式化的方式來顯示所有文檔。
以下實例我們查詢了集合 col 中的數據:
> db.col.insert({title:'study', description:'mongodb study', by:'cara', url:'http://cara.com', tags:['mongodb','database','NoSQL'], likes:101 })
WriteResult({ "nInserted" : 1 })
> db.col.find().pretty()
{
?? ?"_id" : ObjectId("5b55464c7dc80c93e5d47b37"),
?? ?"title" : "study",
?? ?"description" : "mongodb study",
?? ?"by" : "cara",
?? ?"url" : "http://cara.com",
?? ?"tags" : [
?? ??? ?"mongodb",
?? ??? ?"database",
?? ??? ?"NoSQL"
?? ?],
?? ?"likes" : 101
}
>
除了 find() 方法之外,還有一個 findOne() 方法,它只返回一個文檔。
MongoDB AND 條件
MongoDB 的 find() 方法可以傳入多個鍵(key),每個鍵(key)以逗號隔開,即常規 SQL ?的 AND 條件。
語法格式如下:
>db.col.find({key1:value1,?key2:value2}).pretty()
實例
以下實例通過 by 和 title 鍵來查詢
> db.col.find({'by':'cara','title':'study'}).pretty()
{
?? ?"_id" : ObjectId("5b55470c7dc80c93e5d47b39"),
?? ?"title" : "study",
?? ?"description" : "mongodb study",
?? ?"by" : "cara",
?? ?"url" : "http://cara.com",
?? ?"tags" : [
?? ??? ?"mongodb",
?? ??? ?"database",
?? ??? ?"NoSQL"
?? ?],
?? ?"likes" : 101
}
>
以上實例中類似于 WHERE 語句:WHERE by='cara' AND title='study'
MongoDB OR 條件
MongoDB OR 條件語句使用了關鍵字 $or,語法格式如下:
>db.col.find({$or:?[?????????{key1:?value1},?{key2:value2}]}).pretty()
實例
以下實例中,我們演示了查詢鍵 by 值為 cara 或鍵 title 值為 study 的文檔。
> db.col.find({$or:[{'by':'cara'},{'title':'study'}]}).pretty()
{
?? ?"_id" : ObjectId("5b55470c7dc80c93e5d47b39"),
?? ?"title" : "study",
?? ?"description" : "mongodb study",
?? ?"by" : "cara",
?? ?"url" : "http://cara.com",
?? ?"tags" : [
?? ??? ?"mongodb",
?? ??? ?"database",
?? ??? ?"NoSQL"
?? ?],
?? ?"likes" : 101
}
AND 和 OR 聯合使用
以下實例演示了 AND 和 OR 聯合使用,類似常規 SQL 語句為:'where likes>50 AND (by = 'cara' OR title = 'study')'
> db.col.find({"likes":{$gt:50},$or:[{"by":"cara"},{"title":"study"}]}).pretty()
{
?? ?"_id" : ObjectId("5b55470c7dc80c93e5d47b39"),
?? ?"title" : "study",
?? ?"description" : "mongodb study",
?? ?"by" : "cara",
?? ?"url" : "http://cara.com",
?? ?"tags" : [
?? ??? ?"mongodb",
?? ??? ?"database",
?? ??? ?"NoSQL"
?? ?],
?? ?"likes" : 101
}
>
五、MongoDB 條件操作符
描述
條件操作符用于比較兩個表達式并從mongoDB集合中獲取數據。
MongoDB中條件操作符有:
(>) 大于 - $gt
(<) 小于 - $lt
(>=) 大于等于 - $gte
(<= ) 小于等于 - $lte
我們使用的數據庫名稱為"cara" 我們的集合名稱為"col",以下為我們插入的數據。
為了方便測試,我們可以先使用以下命令清空集合 "col" 的數據:
db.col.remove({})
插入以下數據
> db.col.insert({title:'study1', description:'mongodb study', by:'cara1', url:'http://cara.com', tags:['mongodb','database','NoSQL'], likes:200 })
WriteResult({ "nInserted" : 1 })
> db.col.insert({title:'study2', description:'mongodb study', by:'cara2', url:'http://cara.com', tags:['mongodb','database','NoSQL'], likes:150 })
WriteResult({ "nInserted" : 1 })
> db.col.insert({title:'study3', description:'mongodb study', by:'cara3', url:'http://cara.com', tags:['mongodb','database','NoSQL'], likes:100 })
WriteResult({ "nInserted" : 1 })
使用find()命令查看數據:
> db.col.find()
{ "_id" : ObjectId("5b554b9e7dc80c93e5d47b3a"), "title" : "study1", "description" : "mongodb study", "by" : "cara1", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 200 }
{ "_id" : ObjectId("5b554bc37dc80c93e5d47b3b"), "title" : "study2", "description" : "mongodb study", "by" : "cara2", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 150 }
{ "_id" : ObjectId("5b554bd47dc80c93e5d47b3c"), "title" : "study3", "description" : "mongodb study", "by" : "cara3", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
>
MongoDB (>) 大于操作符 - $gt
如果你想獲取 "col" 集合中 "likes" 大于 100 的數據,你可以使用以下命令:
db.col.find({"likes"?:?{$gt?:?100}})
類似于SQL語句:
Select?*?from?col?where?likes?>?100;
輸出結果:
> db.col.find({"likes":{$gt : 100}})
{ "_id" : ObjectId("5b554b9e7dc80c93e5d47b3a"), "title" : "study1", "description" : "mongodb study", "by" : "cara1", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 200 }
{ "_id" : ObjectId("5b554bc37dc80c93e5d47b3b"), "title" : "study2", "description" : "mongodb study", "by" : "cara2", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 150 }
>
MongoDB(>=)大于等于操作符 - $gte
如果你想獲取"col"集合中 "likes" ?大于等于 100 的數據,你可以使用以下命令:
db.col.find({likes?:?{$gte?:?100}})
類似于SQL語句:
Select?*?from?col?where?likes?>=100;
輸出結果:
> db.col.find({likes : {$gte : 100}})
{ "_id" : ObjectId("5b554b9e7dc80c93e5d47b3a"), "title" : "study1", "description" : "mongodb study", "by" : "cara1", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 200 }
{ "_id" : ObjectId("5b554bc37dc80c93e5d47b3b"), "title" : "study2", "description" : "mongodb study", "by" : "cara2", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 150 }
{ "_id" : ObjectId("5b554bd47dc80c93e5d47b3c"), "title" : "study3", "description" : "mongodb study", "by" : "cara3", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
>
MongoDB (<) 小于操作符 - $lt
如果你想獲取"col"集合中 "likes" ?小于 150 的數據,你可以使用以下命令:
db.col.find({likes?:?{$lt?:?150}})
類似于SQL語句:
Select?*?from?col?where?likes?<?150;
輸出結果:
> db.col.find({likes : {$lt : 150}})
{ "_id" : ObjectId("5b554bd47dc80c93e5d47b3c"), "title" : "study3", "description" : "mongodb study", "by" : "cara3", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
>
MongoDB (<=) 小于操作符 - $lte
如果你想獲取"col"集合中 "likes" ?小于等于 150 的數據,你可以使用以下命令:
db.col.find({likes?:?{$lte?:?150}})
類似于SQL語句:
Select?*?from?col?where?likes?<=?150;
輸出結果:
> db.col.find({likes : {$lte : 150}})
{ "_id" : ObjectId("5b554bc37dc80c93e5d47b3b"), "title" : "study2", "description" : "mongodb study", "by" : "cara2", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 150 }
{ "_id" : ObjectId("5b554bd47dc80c93e5d47b3c"), "title" : "study3", "description" : "mongodb study", "by" : "cara3", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
>
MongoDB 使用 (<) 和 (>) 查詢 - $lt 和 $gt
如果你想獲取"col"集合中 "likes" ?大于100,小于 200 的數據,你可以使用以下命令:
db.col.find({likes?:?{$lt?:200,?$gt?:?100}})
類似于SQL語句:
Select?*?from?col?where?likes>100?AND??likes<200;
輸出結果:
> db.col.find({likes : {$lt :200, $gt : 100}})
{ "_id" : ObjectId("5b554bc37dc80c93e5d47b3b"), "title" : "study2", "description" : "mongodb study", "by" : "cara2", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 150 }
>
一些簡寫說明:
$gt?--------?greater?than??> $gte?---------?gt?equal??>= $lt?--------?less?than??< $lte?---------?lt?equal??<= $ne?-----------?not?equal??!= $eq??--------??equal??=
MongoDB $type 操作符
$type操作符是基于BSON類型來檢索集合中匹配的數據類型,并返回結果。
MongoDB 中可以使用的類型如下表所示:
類型 | 數字 | 備注 |
---|---|---|
Double | 1 | |
String | 2 | |
Object | 3 | |
Array | 4 | |
Binary data | 5 | |
Undefined | 6 | 已廢棄。 |
Object id | 7 | |
Boolean | 8 | |
Date | 9 | |
Null | 10 | |
Regular Expression | 11 | |
JavaScript | 13 | |
Symbol | 14 | |
JavaScript (with scope) | 15 | |
32-bit integer | 16 | |
Timestamp | 17 | |
64-bit integer | 18 | |
Min key | 255 | Query with -1. |
Max key | 127 |
MongoDB 操作符 - $type 實例
如果想獲取 "col" 集合中 title 為 String 的數據,你可以使用以下命令:
db.col.find({"title"?:?{$type?:?2}})
> db.col.find({"title" : {$type : 2}})
{ "_id" : ObjectId("5b554b9e7dc80c93e5d47b3a"), "title" : "study1", "description" : "mongodb study", "by" : "cara1", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 200 }
{ "_id" : ObjectId("5b554bc37dc80c93e5d47b3b"), "title" : "study2", "description" : "mongodb study", "by" : "cara2", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 150 }
{ "_id" : ObjectId("5b554bd47dc80c93e5d47b3c"), "title" : "study3", "description" : "mongodb study", "by" : "cara3", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
>
六、MongoDB Limit與Skip方法
MongoDB Limit() 方法
如果你需要在MongoDB中讀取指定數量的數據記錄,可以使用MongoDB的Limit方法,limit()方法接受一個數字參數,該參數指定從MongoDB中讀取的記錄條數。
語法
limit()方法基本語法如下所示:
>db.COLLECTION_NAME.find().limit(NUMBER)
實例
集合 col 中的數據如下:
{ "_id" : ObjectId("5b554b9e7dc80c93e5d47b3a"), "title" : "study1", "description" : "mongodb study", "by" : "cara1", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 200 }
{ "_id" : ObjectId("5b554bc37dc80c93e5d47b3b"), "title" : "study2", "description" : "mongodb study", "by" : "cara2", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 150 }
{ "_id" : ObjectId("5b554bd47dc80c93e5d47b3c"), "title" : "study3", "description" : "mongodb study", "by" : "cara3", "url" : "http://cara.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
顯示查詢文檔中的兩條記錄:
> db.col.find({},{"title":1,_id:0}).limit(2)
{ "title" : "study1" }
{ "title" : "study2" }
>
注:如果沒有指定limit()方法中的參數則顯示集合中的所有數據。
MongoDB Skip() 方法
我們除了可以使用limit()方法來讀取指定數量的數據外,還可以使用skip()方法來跳過指定數量的數據,skip方法同樣接受一個數字參數作為跳過的記錄條數。
語法
skip() 方法腳本語法格式如下:
>db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
實例
以下實例只會顯示第二條文檔數據
> db.col.find({},{"title":1,_id:0}).limit(1).skip(1)
{ "title" : "study2" }
>
注:skip()方法默認參數為 0 。
轉載于:https://blog.51cto.com/13362895/2148947