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

来源:互联网 发布:国金证券交易软件 编辑:程序博客网 时间:2024/06/05 02:24

为了方便试验,我先在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分钟没用也会自动清除

0 0
原创粉丝点击