您的位置:首页 > 数据库 > Mongodb

mongoDB(4):find()查询、分页、游标

2016-07-19 23:40 417 查看
为了方便试验,我先在persons里插入如下类似的几条数据(可以现在编辑器上打完语句在粘贴执行)





由于篇幅限制,这里就不展示所有数据,c m e分别表示语文数学英语的成绩

由于在shell里查看这么多数据会显示的很乱,所以可以用VUE图形工具查看





用图形工具可以带来简便,但由于现在是在学习过程,所以建立还是用原始的shell来学习

VUE作为辅助

>指定返回的键

db.[documentName].find({条件},{键指定})





如上,0表示不显示,1表示显示,这样查看数据会容易看很多

>比较操作符

$lt <

$lte <=

$gt >

$gtr >=

$ne !=

下面以一系列练习来演示

1、查询条件

1.1查询年龄在25-27之间的学生





1.2查询所有不是韩国的学生的数学成绩





2包含或不包含

$in或$nin(类型关系型数据库中的in not in)

2.1查询国籍是中国或者美国的学生信息







3or查询

$or

查询语文成绩大于85或者英语成绩大于90的学生





4NULL

把中国国籍学生增加键sex





然后再来查询sex等于null的学生





5正则查询

查询名字中存在“li”的学生信息





6$not的使用:可以起到取反的作用

查询名字中不存在li的学生信息





7数组查询$all和$index应用

7.1查询喜欢看mongodb和js的学生





7.2查询第二本书是java的学生信息





8查询指定长度数组$size,它不能与比较查询符一起使用

查询喜欢的书籍数量是4本的学生

> db.persons.find({books:{$size:4}},{_id:0,name:1})

所有数据追加键size:4

db.persons.update({},{$set:{size:4}},false,true)

增加书籍时在size字段追加1

如:db.persons.updata({查询器},{$push:{books:"Oracle"},$inc:{size:1}})

9利用shell查询出jim喜欢看的书的数量

var persons = db.persons.find({name:"jim"})

while(persons.hasNext()){

obj = persons.next();

print(obj.books.length)

}

这里用到了游标

10$slice操作符返回文档中指定数组的内部值

10.1查询jim书架的第2-4本书





10.2查询jim的最后一本书





11文档查询

先为jim添加如下数据





查询在K学校上过学并且得A的学生





上面这个方法有弊端。就是顺序不能改变school:“K”与score:"A"调换位置就会出错

可以用下面的方法







但是这样的查询也有问题

改动为school.school:J就会发现也会出现数据

所以:

单条条件组查询$elemMatch





>分页查询

1limit返回指定的数据条数

查询前5条





2skip返回指定数据的跨度

查询第5-10条





3sort返回按照年龄排序的数据 (1:正序 -1:倒序)





最后 游标(类似于遍历 不过游标一开始不是指向第一条数据,而是第一条之前,所以必须先next)





游标几个销毁条件:

1、客户端发来信息叫他销毁

2、游标迭代完毕

3、默认游标超过10分钟没用也会自动清除
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: