天天看點

mongodb中分頁顯示資料集的學習

 這次繼續看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)

如果隻需要顯示某些列,可以這樣:

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()或者在要排序的列中建立索引,才不報錯?  

繼續閱讀