MongoDB之find详解,分页与排序,游标
2017-06-03 00:00
316 查看
之前我么使用find查找对应的数据的时候,会将符合条件的数据的所有字段都拉出来,但是在实际应用中,我们只会查询我们需要的字段,mongodb的find方法也是支持这种方式的:
db.person.find({name:"zhangsan"},{_id:0,age:1})
我们只需要将想要的字段指定为1即可,id比较特殊,必须指定为0才不显示。
查询条件
分页查询:
游标相关知识点:
db.person.find({name:"zhangsan"},{_id:0,age:1})
我们只需要将想要的字段指定为1即可,id比较特殊,必须指定为0才不显示。
查询条件
2.查询条件 2.1查询出年龄在25到27岁之间的学生 db.persons.find({age: {$gte:25,$lte:27},{_id:0,age:1}) 2.2查询出所有不是韩国籍的学生的数学成绩 db.persons.find({country:{$ne:” Korea”}},{_id:0,m:1}) 3.包含或不包含 $in或$nin 2.3查询国籍是中国或美国的学生信息 db.persons.find({country:{$in:[“USA”,“China”]}}) 2.4查询国籍不是中国或美国的学生信息 db.persons.find({country:{$nin:[“USA”,“China”]}}) 4.OR查询 $or 2.4查询语文成绩大于85或者英语大于90的学生信息 db.persons.find({$or:[{c:{$gte:85}},{e:{$gte:90}}]},{_id:0,c:1,e:1}) 5.Null 把中国国籍的学生上增加新的键sex db.person.update({country:”China”},{$set:{sex:”m”}}) 2.5查询出sex 等于 null的学生 6.正则查询 2.6查询出名字中存在”li”的学生的信息 db.persons.find({name:/li/i},{_id:0,name:1}) 7.$not的使用 $not可以用到任何地方进行取反操作 2.7查询出名字中不存在”li”的学生的信息 db.persons.find({name:{$not:/li/i}},{_id:0,name:1}) $not和$nin的区别是$not可以用在任何地方儿$nin是用到集合上的 8.数组查询$all和index应用 2.8查询喜欢看MONGOD和JS的学生 db.persons.find({books:{$all:[“MONGOBD”,”JS”]}},{books:1,_id:0}) 2.9查询第二本书是JAVA的学习信息 db.persons.find({“books.1”:”JAVA”}) 9.查询指定长度数组$size它不能与比较查询符一起使用(这是弊端) 2.8查询出喜欢的书籍数量是4本的学生 db.persons.find({books:{$size:4}},{_id:0,books:1}) 2.9查询出喜欢的书籍数量大于3本的学生 1.增加字段size db.persons.update({},{$set:{size:4}},false, true) 2.改变书籍的更新方式,每次增加书籍的时候size增加1 db.persons.update({查询器},{$push:{books:”ORACLE”},$inc:{size:1}}) 3.利用$gt查询 db.persons.find({size:{$gt:3}}) 2.10利用shell查询出Jim喜欢看的书的数量 var persons = db.persons.find({name:"jim"}) while(persons.hasNext()){ obj = persons.next(); print(obj.books.length) } 10.$slice操作符返回文档中指定数组的内部值 2.11查询出Jim书架中第2~4本书 db.persons.find({name:"jim"},{books:{"$slice":[1,3]}}) 2.12查询出最后一本书 db.persons.find({name:"jim"},{books:{"$slice":-1},_id:0,name:1}) 11.文档查询 为jim添加学习简历文档 jim.json 2.13查询出在K上过学的学生 1. 这个我们用绝对匹配可以完成,但是有些问题(找找问题?顺序?总要带着score?) db.persons.find({school:{school:"K",score:"A"}},{_id:0,school:1}) 2.为了解决顺序的问题我可以用对象”.”的方式定位 db.persons.find({"school.score":"A","school.school":"K"},{_id:0,school:1}) 3.这样也问题看例子: db.persons.find({"school.score":"A","school.school":”J”},{_id:0,school:1}) 同样能查出刚才那条数据,原因是score和school会去其他对象对比 4.正确做法单条条件组查询$elemMatch db.persons.find({school:{$elemMatch:{school:"K",score:"A"}}}) 12.$where 12.查询年龄大于22岁,喜欢看C++书,在K学校上过学的学生信息 复杂的查询我们就可以用$where因为他是万能 但是我们要尽量避免少使用它因为他会有性能的代价
分页查询:
1.Limit返回指定的数据条数 1.1查询出persons文档中前5条数据 db.persons.find({},{_id:0,name:1}).limit(5) 2.Skip返回指定数据的跨度 2.1查询出persons文档中5~10条的数据 db.persons.find({},{_id:0,name:1}).limit(5).skip(5) 3.Sort返回按照年龄排序的数据[1,-1] db.persons.find({},{_id:0,name:1,age:1}).sort({age:1}) 注意:mongodb的key可以存不同类型的数据排序就也有优先级 最小值 null 数字 字符串 对象/文档 数组 二进制 对象ID 布尔 日期 时间戳 正则 最大值 4.Limit和Skip完成分页 4.1三条数据位一页进行分页 第一页db.persons.find({},{_id:0,name:1}).limit(3).skip(0) 第二页db.persons.find({},{_id:0,name:1}).limit(3).skip(3)
游标相关知识点:
1.游标 利用游标遍历查询数据 var persons = db.persons.find(); while(persons.hasNext()){ obj = persons.next(); print(obj.name) } 2.游标几个销毁条件 1.客户端发来信息叫他销毁 2.游标迭代完毕 3.默认游标超过10分钟没用也会别清除 3.查询快照 快照后就会针对不变的集合进行游标运动了,看看使用方法. db.persons.find({$query:{name:”Jim”},$snapshot:true}) 高级查询选项 $query $orderby $maxsan:integer 最多扫描的文档数 $min:doc 查询开始 $max:doc 查询结束 $hint:doc 使用哪个索引 $explain:boolean 统计 $snapshot:boolean 一致快照
相关文章推荐
- mongoDB的Find详解、分页和排序、游标
- mongodb-find、分页、排序
- MongoDB 学习笔记(三):分页、排序与游标
- 3.非关系型数据库(Nosql)之mongodb:升降序排序,排序分页,$all,$in,$nin,$or,$nor, $exists,游标,更新(update,$set,$unset,$inc)
- MongoDB 学习笔记(三):分页、排序与游标
- 3.非关系型数据库(Nosql)之mongodb:升降序排序,排序分页,$all,$in,$nin,$or,$nor, $exists,游标,更新(update,$set,$unset,$inc)
- mongoDB(4):find()查询、分页、游标
- MongoDB-分页,聚合函数,mapRedcue,游标
- Oracle分页查询中排序与效率问题解决方法详解
- eayui datagrid 分页 排序 详解
- eayui datagrid 分页 排序 详解
- MongoDB_06之查询+分页查询与排序
- mongodb 分页查询并 根据传入的经纬度计算计算两点距离进行排序
- JS----dataTables分页排序参数详解
- MongoDB文档查询-分页查询(limit、skip)与查询结果排序(sort)
- mongodb java增删该查和模糊、排序和分页查询
- MongoDB 游标详解及实例代码
- Mongodb 3.2 Java 显示指定字段 条件查询 分页排序
- mongodb3.2系统性学习——5、游标 模糊查询 findAndModify函数
- MongoDB 数据分页和排序 limit,skip,sort用户