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.快照(文档变大后,可能预留空间不够,则会扩容,把顺序打乱,这样会导致重复读数据,这个时候就要用到快照)
MongoDB_06之查询+分页查询与排序
最新推荐文章于 2022-05-10 13:36:29 发布