mongodb中分页显示数据集的学习

标签: mongodb 分页 数据 | 发表时间:2013-01-27 21:31 | 作者:
出处:http://www.iteye.com
  这次继续看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()或者在要排序的列中创建索引,才不报错?

已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [mongodb 分页 数据] 推荐:

mongodb中分页显示数据集的学习

- - ITeye博客
  这次继续看mongodb中的分页. 3)每次只显示2条,使用limit就可以了.   需要排下序,没问题,加上sort就可以了.    ,比如根据name排序.    如果只需要显示某些列,可以这样:.    _id:0这样的方式,连id列也不显示了.    比如要范围第3,第4条记录,使用skip(2),跳过2条.

MongoDB之数据建模

- - 博客园_首页
MongoDB与关系型数据库的建模还是有许多不同,因为MongoDB支持内嵌对象和数组类型. MongoDB建模有两种方式,一种是内嵌(Embed),另一种是连接(Link). 那么何时Embed何时Link呢. 那得看两个实体之间的关系是什么类型. 一对一的关系:Embed,比如用户信息集合有Address字段,Address字段有省、市、县三个字段.

MongoDB如何存储数据

- - 数据库 - ITeye博客
深入了解MongoDB如何存储数据之前,有一个概念必须清楚,那就是Memeory-Mapped Files. 下图展示了数据库是如何跟底层系统打交道的. 内存映射文件是OS通过mmap在内存中创建一个数据文件,这样就把文件映射到一个虚拟内存的区域. 虚拟内存对于进程来说,是一个物理内存的抽象,寻址空间大小为2^64.

MongoDB数据缓存刷新机制

- 铭文 - NoSQLFan
本文原文出自淘宝DBA团队博客,文章对MongoDB源码进行了分析,跟踪了其缓存Flush机制,对缓存刷新机制进行了清晰的讲解. 最近配合好几个项目测试了MongoDB的写入性能. 在内存没有用尽的情况下,虽然MongoDB只有一个更新线程,写入还是非常快的,基本上能达到25000/s以上(索引数据用uuid_generate_randome和uuid_unparse随机产生).

MongoSpy, MongoWatch及MongoDB数据压缩

- gOODiDEA - NoSQLFan
本文源自openmymind博客的一篇文章,文中作者介绍了两个自己用Node.JS写的MongoDB监控小工具,MongoSpy和MongoWatch,然后提出了在对MongoDB进行文本存储时使用压缩以节约空间的设想. 这两上小工具功能并不怎么强大,实现也简单,如果你会用任何一种语言操作MongoDB的话,相信你都能写一个类似的东西.

MongoDB数据库文档大全

- - CSDN博客推荐文章
MongoDB数据库简单介绍. MongoDB是一个高性能 ,开源 ,无模式的文档型数据库,它在许多场景下可用于替代传统的关系型数据库或键/值存储模式. MongoDB是用C++开发, 提供了以下功能:. 面向集合的存储:适合存储对象及JSON形式的数据. 动态查询:Mongo支持丰富的查询表达式.

大偏移量下Redis、MongoDB分页/排名性能比较

- - CSDN博客数据库推荐文章
题目其实并不太准确,因为数据库并不会提供 分页、排名等功能,提供的只是数据的存取,分页排名这些都是我们基于数据库的实用案例而已. 然而无论是 Redis还是 MongoDB,通常都有一些常规的做分页和排名的方法. 本文就通过一些测试数据来向大家介绍Redis和MongoDB(以及传统关系型数据库)在这方面的性能差别.

Craigslist迁移20亿数据到MongoDB的经验与教训

- gOODiDEA - NoSQLFan
MongoDB正热火朝天,应用案例层出不穷,可能你也正跃跃欲试. 好吧,既然要试,那我们最好搞清楚可能遇到哪些困难,下面PPT就是一个很好的经验总结,下面PPT是Craigslist网站(可能是全球最大的分类清单网站)将其20亿数据迁移到MongoDB过程中遇到的问题及其经验,相信对每一个使用MongoDB的同学都会有所帮助.

Mongodb亿级数据量的性能测试

- - haohtml's blog
进行了一下Mongodb亿级数据量的性能测试,分别测试如下几个项目:.  (所有插入都是单线程进行,所有读取都是多线程进行). 1) 普通插入性能 (插入的数据每条大约在1KB左右). 2) 批量插入性能 (使用的是官方C#客户端的InsertBatch),这个测的是批量插入性能能有多少提高. 3) 安全插入功能 (确保插入成功,使用的是SafeMode.True开关),这个测的是安全插入性能会差多少.

Memcache缓存与Mongodb数据库的优势和应用

- - C++博客-牵着老婆满街逛
转载自: http://www.jzxue.com/shujuku/shujukuzonghe/201005/19-3807.html. 先说说自己对 Memcache和Mongodb的一些看法,主要是抛砖引玉了,希望看到大家的意见和补充. Memcache的优势我觉得总结下来主要体现在:. 可以由10台拥有4G内存的机器,构成一个40G的内存池,如果觉得还不够大可以增加机器,这样一个大的内存池,完全可以把大部分热点业务数据保存进去,由内存来阻挡大部分对数据库读的请求,对数据库释放可观的压力.