集腋成裘-15-MongoDB系列-02Find详细
时间:2019-06-12
本文章向大家介绍集腋成裘-15-MongoDB系列-02Find详细,主要包括集腋成裘-15-MongoDB系列-02Find详细使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
首先推荐一个Studio 3T 的操作工具
1:支持批量插入
var persons = [{ name:"jim", age:25, email:"75431457@qq.com", c:89,m:96,e:87, country:"USA", books:["JS","C++","EXTJS","MONGODB"] }, { name:"tom", age:25, email:"214557457@qq.com", c:75,m:66,e:97, country:"USA", books:["PHP","JAVA","EXTJS","C++"] }, { name:"lili", age:26, email:"344521457@qq.com", c:75,m:63,e:97, country:"USA", books:["JS","JAVA","C#","MONGODB"] }, { name:"zhangsan", age:27, email:"2145567457@qq.com", c:89,m:86,e:67, country:"China", books:["JS","JAVA","EXTJS","MONGODB"] }, { name:"lisi", age:26, email:"274521457@qq.com", c:53,m:96,e:83, country:"China", books:["JS","C#","PHP","MONGODB"] }, { name:"wangwu", age:27, email:"65621457@qq.com", c:45,m:65,e:99, country:"China", books:["JS","JAVA","C++","MONGODB"] }, { name:"zhaoliu", age:27, email:"214521457@qq.com", c:99,m:96,e:97, country:"China", books:["JS","JAVA","EXTJS","PHP"] }, { name:"piaoyingjun", age:26, email:"piaoyingjun@uspcat.com", c:39,m:54,e:53, country:"Korea", books:["JS","C#","EXTJS","MONGODB"] }, { name:"lizhenxian", age:27, email:"lizhenxian@uspcat.com", c:35,m:56,e:47, country:"Korea", books:["JS","JAVA","EXTJS","MONGODB"] }, { name:"lixiaoli", age:21, email:"lixiaoli@uspcat.com", c:36,m:86,e:32, country:"Korea", books:["JS","JAVA","PHP","MONGODB"] }, { name:"zhangsuying", age:22, email:"zhangsuying@uspcat.com", c:45,m:63,e:77, country:"Korea", books:["JS","JAVA","C#","MONGODB"] }] for(var i = 0;i<persons.length;i++){ db.persons.insert(persons[i]) } var persons = db.persons.find({name:"jim"}) while(persons.hasNext()){ obj = persons.next(); print(obj.books.length) }
2:查询
find:db.集合名.find({条件},{键指定}) 1:只查找部分字段 1.1 查询出所有数据的指定键(name ,age ,country) db.persons.find({},{name:1,age:1,country:1,_id:0}); 2.查询条件 $gte $gt $lte $lt $ne 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的学生 db.persons.find({sex:{$in:[null]}},{country:1}) 或者db.persons.find({sex:{$eq: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.8.2查询第二本书是JAVA的学习信息 db.persons.find({“books.1”:”JAVA”}) 9.查询指定长度数组$size它不能与比较查询符一起使用(这是弊端) 2.9查询出喜欢的书籍数量小于4本的学生 db.persons.find({$where:"this.books.length《4"}) 2.9.2查询出lili喜欢看的书的数量 var lili = db.persons.find({name:"lili"}) while(lili.hasNext()){ obj=lili.next() print(obj.books.length) } 10.$slice操作符返回文档中指定数组的内部值 2.10查询出Jim书架中第2~4本书 db.persons.find({name:"jim"},{books:{"$slice":[1,3]}}) 2.10.2查询出最后一本书 db.persons.find({name:"jim"},{books:{"$slice":-1},_id:0,name:1})
3:文档查询
var jim = [{ school :"K", score:"A" },{ school :"L", score:"B" },{ school :"J", score:"A+" }] db.persons.update({name:"jim"},{$set:{school:jim}})
3.文档查询 3.1查询出在K上过学的学生 db.persons.find({"school.school":"K"}) 3.2查询出在K上过学的学生,而且成绩中获得过A的学生 db.persons.find({"school.school":"K","school.score":"A"}) 3.3查询出在K校成绩为A的学生 db.persons.find({school:{$elemMatch:{"school":"K","score":"A"}}}) 4.$where 4.查询年龄大于22岁,喜欢看C#书,在K学校上过学的学生信息 db.persons.find({age:22,books:{$in:["C#"]},"school.school":"K"}) 或者 db.persons.find({"$where":function(){ //得到查询结果的每一条文档 var books = this.books; //得到文档中的school对象 var school = this.school; //如果年纪>=22 if(this.age > 22){ var php = null; //遍历书籍 for ( var i = 0; i < books.length; i++) { if(books[i] == "C++"){ php = books[i]; //如果学校是真 if(school){ for (var j = 0; j < school.length; j++) { //判断是不是在K上学 if(school[j].school == "K"){ //返回是真 return true; } } break; } } } } }}) 5.Limit返回指定的数据条数 5.1查询出persons文档中前5条数据 db.persons.find({},{_id:0,name:1}).limit(5) 6.Skip返回指定数据的跨度 6.1查询出persons文档中5~10条的数据 db.persons.find({},{_id:0,name:1}).limit(5).skip(5) 7.Sort返回按照年龄排序的数据[1,-1] db.persons.find({},{_id:0,name:1,age:1}).sort({age:1}) 注意:mongodb的key可以存不同类型的数据排序就也有优先级 最小值 null 数字 字符串 对象/文档 数组 二进制 对象ID 布尔 日期 时间戳 正则 最大值 8:分页(跳过多少条,去多少条) db.persons.find().limit(5).skip(5).sort({id:1}) 注意:分页的性能不好,建议通过,筛选条件+limit(),获取分页 示例:根据自增的id取数据(每页5条,显示第二页) 方法一:db.persons.find().limit(5).skip(5) 方法二:db.persons.find({id:{$gt:5}}).limit(5) 而且,应该把重点放到便捷和精确查询上而不是分页的性能上 因为用户最多不会翻查过2页的
原文地址:https://www.cnblogs.com/YK2012/p/10987694.html
- 腾讯云GAME-TECH沙龙——全球同服游戏语音解决方案
- 【Scikit-Learn 中文文档】双聚类 - 无监督学习 - 用户指南 | ApacheCN
- ASP.NET MVC的客户端验证:jQuery的验证
- RxJava系列一
- ASP.NET MVC涉及到的5个同步与异步,你是否傻傻分不清楚?[上篇]
- 被遗忘的软件产品形态
- 区块链是什么,一文给您讲清楚
- ASP.NET MVC涉及到的5个同步与异步,你是否傻傻分不清楚?[下篇]
- 2017科技颠覆生活哪家强?
- 柯洁宣布复出,再次迎战AI!但对手不再是阿尔法狗……
- 【Scikit-Learn 中文文档】协方差估计 / 经验协方差 / 收敛协方差 / 稀疏逆协方差 / Robust 协方差估计 - 无监督学习 - 用户指南 | ApacheCN
- 先搞懂这八大基础概念,再谈机器学习入门!
- 人工智能化的传感器技术
- 带有CSS3的动画3D条形图
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 开篇讲--关于Kali的碎碎念
- Mysql服务器SQL模式 (官方精译)
- 如何用Prometheus和Grafana监控Kubernetes集群?
- linux实时文件事件监听--inotify
- MySQL事务原理&实战【官方精译】
- 俗话:MySQL索引
- 基于飞桨复现CVPR 2016 MCNN的过程解析:教你更精确估算人流密度
- mysql各种引擎对比、实战
- 接球小游戏玩腻了?换个姿势让PaddleX帮你吊打游戏系统
- mysql事务隔离级别详解和实战
- ELK+FileBeat+Kafka分布式系统搭建图文教程
- Flink CEP 原理和案例详解
- 实战开发,使用 Spring Session 与 Spring security 完成网站登录改造!!
- 分布式计算框架Gearman原理详解
- 【从0开始の全记录】Flume+Kafka+Spark+Spring Boot 统计网页访问量项目