db.[文档名].find ({条件},{键指定})
查询出所有数据的指定键(name ,age ,country)
※条件不写就是查询全部※需要查询的就在键后指定为1,不用就指定为0(感觉只要想查的键后面有值不见得非得是1)※如果不指定显示=式_id:0,那查询过程都是带有_id的 2.查询条件比较操作符
意义
举例
$lt
<
查询出id小于5的学生
> db.Students.find({_id:{$lt:5}},{})
$lte
<=
查询出年龄小于等于25岁之间的学生
> db.Students.find({age:{$lte:25}},{})
$ne
!=
查询出国家不是中国的学生
> db.Students.find({country:{$ne:"China"}},{})
$gt
>
查询所有年纪大于27岁的,中国学生名字
> db.Students.find({age:{$gt:27}},{name:1,country:1,age:1})
{ "_id" : 5, "name" : "Zhou", "age" : 30, "country" : "China" }
$gte
>=
同上
3.包含或不包含较操作符
意义
举例
$in
包含
查询国家是中国和美国的学生
> db.Students.find({country:{$in:["China","USA"]}},{})
$nin
不包含
查询年龄不是27岁的学生
> db.Students.find({age:{$nin:[27]}},{})
4.OR查询较操作符
意义
举例
$or
包含
查询年龄小于27岁,或者国家是美国的学生
>db.Students.find({$or:[{age:{$lt:27}},{country:"USA"}]},{})
查询年龄大于等于30岁,或者国家是不是美国的学生
>db.Students.find({$or:[{age:{$gte:30}},{country:{$nin:["China"]}}]},{})
5.Null为所有美国学生添加性别属性为男性(M)
查询所有sex属性为null的学生
6.正则查询查询出名字中存在”Zh”的学生的信息
7.$not的使用※$not和$nin的区别是$not可以用在任何地方儿$nin是用到集合上的
查找出名字中不存在“Zh”的学生信息
8.数组查询$all和index应用查询所有拥有JS和PHP书籍的同学
查询第三本书是C#的同学
上面那个使用index来查询的例子中,"books.2"一定要用""包含起来
9.查询指定长度数组$size它不能与比较查询符一起使用(这是弊端)
插入一条book数组有两本数的同学
查询只有两本书的同学
查询名字是“Li”的喜欢的书的数量
10.$slice操作符返回文档中指定数组的内部值查询名字为“Wang”书架中第1~3本书
查询出最后一本书
11.文档查询添加一个对象数组到“Li”同学,记录“Li”同学的成绩
查询参加了数学考试,并且分数为90的同学
①.绝对匹配可以但是问题存在如下:
条件顺序变化时候,
条件数目不一致的时候,也同样查不到
②.为了解决顺序的问题我可以用对象“.”这种方式支持顺序的变化,但是也同样存在问题,那就是匹配的问题,条件不是作为一对条件来进行匹配的
例如:
这里的85分是英语成绩
③.正确做法单条条件组查询$elemMatch 二、分页与排序 1.Limit返回指定的数据条数查询出Student文档中前5条数据
2.Skip返回指定数据的跨度查询出persons文档中3~8条的数据
3.Sort返回按照年龄排序的数据[1,-1]查询所有数据,按照年龄排序
正序
倒序
skip性能不好,可以采用插入时间的做法来弥补,具体方法如下:
1.在每一个记录后面都加入一个插入时间的键值对2.每次取数据的时候都把取出的最后一个数据的时间保存下来,再传给下一次查询3.使用db.persons.find({date:{$gt:日期数值}}).limit(取出的数据数目)比较查询取出要分页的数据 三、游标和其他知识 1.利用游标来查询数据 2.游标几个销毁条件客户端发来信息叫他销毁
游标迭代完毕
默认游标超过10分钟没用也会别清除
3.查询快照快照后就会针对不变的集合进行游标运动了,看看使用方法.
为什么用快照,以为MongoDB在进行更新的时候,例如添加一些键值对,那么MongoDB的处理不会在原来的索引位置上进行更新操作,而是会把
更新之后的数据,放在末尾,那么就导致了前后两次进行查询时候相同索引对应不同数据的情况
补充:
高级查询选项
$where$query$orderby$maxsan:integer 最多扫描的文档数$min:doc 查询开始$max:doc 查询结束$hint:doc 使用哪个索引$explain:boolean 统计$snapshot:boolean 一致快照到此这篇关于MongoDB实现查询操作的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持七叶笔记。