MongoDB数据库中find的修改器整理与总结
find参数详解:
query:这个就是查询条件,MongoDB默认的第一个参数。
fields:(返回内容)查询出来后显示的结果样式,可以用true和false控制是否显示。
1. 简单查找
用途:用来查找集合中的所有数据
1.基本语法示例:
db.user.find({})
2.json嵌套的查找
db.user.find({"name":"xiaoming","age":25})
2. 筛选字段
用途:根据筛选条件展示部分字段(查询结果只展示name与skill字段,剩余字段不展示)
db.workmate.find({"name":"xiaoming"},{name:true,"skill":true,_id:false})
备注:这里的false和true,也可以用0和1表示
3. 不等修饰符
1. 小于($lt):英文全称less-than
2. 小于等于($lte):英文全称less-than-equal
3. 大于($gt):英文全称greater-than
4. 大于等于($gte):英文全称greater-than-equal
5. 不等于($ne):英文全称not-equal
示例:查找workmate集合中年龄在25-30之间的数据
eg:db.workmate.find({"age":{$lte:30,$gte:25}})
4. 日期查找
功能描述:查找注册日期大于2018年1月10日的数据
var startDate= new Date('01/01/2018');
db.workmate.find({"regeditTime":{$gt:startDate}})
5. $in修饰符
用途:范围查询
1. number类型字段的范围查询
db.workmate.find({"age":{$in:[25,33]}})
功能描述:查询同事中年龄是25岁和33岁的信息
6. $nin修饰符
用途:查询除了$in条件以外的值
db.workmate.find({"age":{$nin:[25,33]}})
功能描述:查询同事中年龄是25岁和33岁的信息
7. $or修饰符
用途:查询多个键值,或的关系
db.workmate.find({$or:[{"age":{$gte:30}},{"skill":'PHP'}]})
功能描述:查询age大于30或skill为PHP的数据。
8. $and修饰符
用途:查询同时满足多个条件的数据,与的关系
db.workmate.find({$and:[{"age":{$gte:30}},{"skill":'PHP'}]})
功能描述:查询age大于30并且skill为PHP的数据。
9. $not修饰符
用途:查询除条件之外的数据,非的关系
db.workmate.find({
age:{
$not:{
$lte:30,
$gte:20
}
}
})
功能描述:查询age大于20小于30的数据。
备注:$not修饰符不能应用在条件语句中,只能在外边进行查询使用。
10. 基础数组查询
数据结构展示:
var workmate1={
name:'LiJia1',
age:26,
sex:0,
job:'前端1',
skill:{
skillOne:'HTML+CSS3',
skillTwo:'JavaScript',
skillThree:'PHP'
},
regeditTime:new Date(),
interest:['玩游戏1']
}
···
var workmate10={
name:'LiJia',
age:26,
sex:0,
job:'前端',
skill:{
skillOne:'HTML+CSS',
skillTwo:'JavaScript',
skillThree:'PHP'
},
regeditTime:new Date(),
interest:['玩游戏','美食','篮球']
}
1. 查询爱好为’画画’,’聚会’,’看电影’的数据
db.workmate.find({interest:['画画','聚会','看电影']},{name:1,interest:1,age:1,_id:0})
2. 查询爱好为’看电影’的数据
db.workmate.find({interest:'看电影'},{name:1,interest:1,age:1,_id:0})
备注:中括号相当于完全匹配
11. $all-数组多项查询
用途:数组多项查询(查询同时满足多个条件的数据,与的关系)
db.workmate.find({interest:{$all:["看电影","看书"]}},{name:1,interest:1,age:1,_id:0})
功能描述:查询兴趣中既有看电影又有看书的数据。
备注:$not修饰符不能应用在条件语句中,只能在外边进行查询使用。
12. $in-数组的或者查询
用途:数组的或查询(查询满足其中一个条件的数据,或的关系)
db.workmate.find({interest:{$in:["看电影","看书"]}},{name:1,interest:1,age:1,_id:0})
功能描述:查询爱好中有看电影的或者看书的数据
13. $size-数组个数查询
用途:根据数组的数量查询出结果
db.workmate.find({interest:{$size:5}},{name:1,interest:1,age:1,_id:0})
功能描述:查找兴趣的数量是5个的人员信息数据
14. $slice-显示选项
用途:对array类型字段的截取查找(类似与js中的slice方法功能)
db.workmate.find({},{name:1,interest:{$slice:2},age:1,_id:0})
功能描述:查询整个集合后,显示数据时只显示爱好一栏的前两条数据。
备注:如果想显示要查询数组的最后一条,可使用slice:-1进行查询。
db.workmate.find({},{name:1,interest:{$slice:-1},age:1,_id:0})
15. 正则查询
用途:根据给定的正则表达式进行数据查询,模糊查询多用于搜索
db.user.find({name:/a/})
功能描述:查看name中包含a的数据
db.user.find({name:/^mongo/})
功能描述:查看name中以mongo开头的数据
16. 查询第一条记录
用途:查询结果只展示第一条
db.user.findOne({查询条件})
17. 查询指定字段的数据,并去重:distinct
db.user.distinct('gender')
18. 美化查询结果:pretty(json数据美化)
db.user.find().pretty()
19. 指定结果集返回条目:limit
db.user.find().limit(2)
20. 跳过指定条数据展示查询结果:skip
db.user.find().skip(1)
21. 对结果集排序:sort
db.user.find().sort({salary:1})
备注:1表示升序,-1表示降序
22. 统计结果集中的记录数量:count
db.user.find().count()
23. $where修饰符
用途:在条件中使用js的方法进行查询
db.workmate.find({$where:"this.age>30"})
功能描述:查询年龄大于30岁的人员
备注:this指向的是workmate(查询集合)本身,虽强大和灵活,但这种查询对数据库的压力和安全性都会变重,所以在工作中尽量减少$where修饰符的使用。
24. explain():计算数据的查询时间
用途:计算数据的查询时间
db.workmate.find({$where:"this.age>30"}).explain("executionStats")
功能描述:当查询年龄大于30岁的人员时所需要的时间
25. findOne:查询第一条数据
用途:指查找符合条件的第一条数据
db.workmate.findOne({条件});