本文整理自网络,侵删。
一、Find查询
事前准备:插入如下数据
db.Students.insert([ { _id:1, name:"Zhao", age:25, country:"USA", books:["JS","C++","EXTJS","MONGODB"]}, { _id:2, name:"Qian",age:22, country:"USA", books:["PHP","JAVA","EXTJS","C++"]}, { _id:3,name:"Sun",age:26, country:"USA", books:["JS","JAVA","C#","MONGODB"]}, { _id:4, name:"Li",age:27,country:"China",books:["JS","JAVA","EXTJS","MONGODB"]}, { _id:5,name:"Zhou", age:30,country:"China",books:["JS","C#","PHP","MONGODB"]}, { _id:6, name:"Wu", age:27, country:"Japan", books:["JS","JAVA","C++","MONGODB"]}, { _id:7, name:"Zheng", age:27, country:"UK", books:["JS","JAVA","EXTJS","PHP"]}, { _id:8, name:"Wang", age:26, country:"Korea",books:["JS","C#","EXTJS","MONGODB"]} ])
1.指定返回的键
db.[文档名].find ({条件},{键指定})
查询出所有数据的指定键(name ,age ,country)
db.Students.find({},{name:1,age:1,country:1,_id:0})
- ※条件不写就是查询全部
- ※需要查询的就在键后指定为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)
> db.Students.update({country:"USA"},{$set:{sex:"M"}},false,true)
查询所有sex属性为null的学生
> db.Students.find({sex:{$in:[null]}},{name:1,country:1})
6.正则查询
查询出名字中存在”Zh”的学生的信息
> db.Students.find({name:/Zh/},{}) { "_id" : 1, "name" : "Zhao", "age" : 25, "country" : "USA", "books" : [ "JS", "C++", "EXTJS", "MONGODB" ], "sex" : "M" } { "_id" : 5, "name" : "Zhou", "age" : 30, "country" : "China", "books" : [ "JS", "C#", "PHP", "MONGODB" ] } { "_id" : 7, "name" : "Zheng", "age" : 27, "country" : "UK", "books" : [ "JS", "JAVA", "EXTJS", "PHP" ] }
7.$not的使用
※$not和$nin的区别是$not可以用在任何地方儿$nin是用到集合上的
查找出名字中不存在“Zh”的学生信息
> db.Students.find({name:{$not:/Zh/}},{}) { "_id" : 2, "name" : "Qian", "age" : 22, "country" : "USA", "books" : [ "PHP","JAVA", "EXTJS", "C++" ], "sex" : "M" } { "_id" : 3, "name" : "Sun", "age" : 26, "country" : "USA", "books" : [ "JS", "JAVA", "C#", "MONGODB" ], "sex" : "M" } { "_id" : 4, "name" : "Li", "age" : 27, "country" : "China", "books" : [ "JS", "JAVA", "EXTJS", "MONGODB" ] } { "_id" : 6, "name" : "Wu", "age" : 27, "country" : "Japan", "books" : [ "JS", "JAVA", "C++", "MONGODB" ] } { "_id" : 8, "name" : "Wang", "age" : 26, "country" : "Korea", "books" : [ "JS","C#", "EXTJS", "MONGODB" ] }
8.数组查询$all和index应用
查询所有拥有JS和PHP书籍的同学
> db.Students.find({books:{$all:["JS","PHP"]}},{}) { "_id" : 5, "name" : "Zhou", "age" : 30, "country" : "China", "books" : [ "JS", "C#", "PHP", "MONGODB" ] } { "_id" : 7, "name" : "Zheng", "age" : 27, "country" : "UK", "books" : [ "JS", "JAVA", "EXTJS", "PHP" ] }
查询第三本书是C#的同学
> db.Students.find({"books.2":"C#"},{}) { "_id" : 3, "name" : "Sun", "age" : 26, "country" : "USA", "books" : [ "JS", "JAVA", "C#", "MONGODB" ], "sex" : "M" }
上面那个使用index来查询的例子中,"books.2"一定要用""包含起来
9.查询指定长度数组$size
它不能与比较查询符一起使用(这是弊端)
相关阅读 >>
mongodb常见错误与解决方法小结(mongodb中经常出现的错误)
ubuntu 18.04安装mongodb 4.0 的教程详解
更多相关阅读请进入《mongodb》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。