MongoDB_06之查询+分页查询与排序

来源:互联网 发布:状态机编程 编辑:程序博客网 时间:2024/05/22 12:05

1.$slice操作符返回文档中指定数组的内部值  查询出Jim书架中第2-4本书  db.persons.find({name:"Jim"},{books:{$slice:[1,3]},_id:0})  查询出最后一本书  db.persons.find({name:"Jim"},{books:{$slice:-1},_id:0}) //两个条件写在同一个{}中2.文档查询(数组对象的查询)  查询出在K学校上过学并且成绩是A的学生 即 是K学校并且成绩是A  db.persons.find({school:{school:"K",score:"A"}},{_id:0,school:1})  但上面的查询存在一个问题,因数组对象具有顺序,如果把score:"A"放前面,school:"K"放后面,将会导致查不出来,为了解决这类问题,可以用单条条件组查询$elemMatch  db.persons.find({school:{$elemMatch:{school:"K",score:"A"}}})3.$where查询  查询出年龄大于22岁,喜欢看c++,在K学校上过学的学生信息  复杂的查询我们可以用$where,因为他是万能的,但是我们要尽量少使用它,因它有性能的代价  //具体用法请查看mongoDB权威指南分页查询4.limit返回指定的数据条数  查询出persons文档中前5跳数据   db.persons.find({},{_id:0,name:1}).limit(5)5.skip返回指定数据的跨度  查询出persons文档中5-10条数据 即 跨5条查5条  db.persons.find({},{_id:0,name:1}).limit(5).skip(5)6.sort排序  返回按照年龄排序的数据,sort的值有-1,1 代表倒序,正序  按照正序查询出5到10条中的学生信息  db.persons.find({},{_id:0,name:1,age:1}).limit(5).skip(5).sort({age:1})7,limit和skip完成分页  第一页 db.persons.find({},{_id:0,name:1}).limit(3).skip(0) //查3条 跨0条  第二页 db.persons.find({},{_id:0,name:1}).limit(3).skip(3) //查3条 跨3条游标8.利用游标遍历查询数据  var persons = db.persons.find();  while(persons.hasNext()) {    obj = persons.next();    print(obj.name) }9.快照(文档变大后,可能预留空间不够,则会扩容,把顺序打乱,这样会导致重复读数据,这个时候就要用到快照)


0 0