這次繼續看mongodb中的分頁。首先依然是插入數據:
?
1)
?
db.Blog.insert( { name : "Denis",? age : 20, city : "Princeton" } )
?
db.Blog.insert( { name : "Abe",??? age : 30, city : "Amsterdam" } )
?
db.Blog.insert( { name : "John",?? age : 40, city : "New York"? } )
?
db.Blog.insert( { name : "Xavier", age : 10, city : "Barcelona" } )
?
db.Blog.insert( { name : "Zen",??? age : 50, city : "Kyoto"???? } )
?
2) 查詢下
?
?? db.Blog.find()
?
? 結果為:
?
{ "_id" : ObjectId("51028ae0a8c33b71ed76a807"), "name" : "Denis", "age" : 20, "city" : "Princeton" }
?
{ "_id" : ObjectId("51028ae0a8c33b71ed76a808"), "name" : "Abe", "age" : 30, "city" : "Amsterdam" }
?
{ "_id" : ObjectId("51028ae2a8c33b71ed76a809"), "name" : "John", "age" : 40, "city" : "New York" }
?
{ "_id" : ObjectId("51028ae2a8c33b71ed76a80a"), "name" : "Xavier", "age" : 10, "city" : "Barcelona" }
?
{ "_id" : ObjectId("51028ae4a8c33b71ed76a80b"), "name" : "Zen", "age" : 50, "city" : "Kyoto" }
?
3)每次只顯示2條,使用limit就可以了
?
?? db.Blog.find().limit(2)
?
結果:
?
?? { "_id" : ObjectId("5103e22c88a39c3c0b2585e1"), "name" : "Denis", "age" : 20, "city" : "Princeton" }
?
{ "_id" : ObjectId("5103e22d88a39c3c0b2585e2"), "name" : "Abe", "age" : 30, "city" : "Amsterdam" }
?
? 需要排下序,沒問題,加上sort就可以了
?
?? ,比如根據name排序
?
? db.Blog.find().sort({name: 1}).limit(2)
?
?
?
{ "_id" : ObjectId("5103e22d88a39c3c0b2585e2"), "name" : "Abe", "age" : 30, "city" : "Amsterdam" }
?
{ "_id" : ObjectId("5103e22c88a39c3c0b2585e1"), "name" : "Denis", "age" : 20, "city" : "Princeton" }
?
?? 如果只需要顯示某些列,可以這樣:
?
?? db.Blog.find(null, {name: 1, _id: 0}).sort({name: 1}).limit(2)
?
?? _id:0這樣的方式,連id列也不顯示了
?
? 只顯示
?
? { "name" : "Abe" }
?
{ "name" : "Denis" }
?
???
?
3 分頁
?
?? 比如要范圍第3,第4條記錄,使用skip(2),跳過2條
?
db.Blog.find(null, {name: 1, _id: 0}).sort({name: 1}).limit(2).skip(2)
?
?? 結果為:
?
{ "name" : "John" }
?
{ "name" : "Xavier" }
?
如果skip的數超過記錄條數,也是不會報錯的了:
?
? 比如:
?
db.Blog.find(null, {name: 1, _id: 0}).sort({name: 1}).limit(2).skip(6)
?
?? 另外,使用$natural參數可以倒過來輸出所有記錄,比如:
?
? db.Blog.find().sort( { $natural: -1 } )
?
{ "_id" : ObjectId("5103eaa688a39c3c0b2585ed"), "name" : "Zen", "age" : 50, "city" : "Kyoto" }
?
{ "_id" : ObjectId("5103eaa588a39c3c0b2585ec"), "name" : "Xavier", "age" : 10, "city" : "Barcelona" }
?
{ "_id" : ObjectId("5103eaa588a39c3c0b2585eb"), "name" : "John", "age" : 40, "city" : "New York" }
?
{ "_id" : ObjectId("5103eaa588a39c3c0b2585ea"), "name" : "Abe", "age" : 30, "city" : "Amsterdam" }
?
{ "_id" : ObjectId("5103eaa588a39c3c0b2585e9"), "name" : "Denis", "age" : 20, "city" : "Princeton" }
?
?? 要注意的是,居然說超過32MB? 會報錯,說要用 cursor.limit()或者在要排序的列中創建索引,才不報錯?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
