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({条件});