资源描述:
《mongodb中几种不同查询方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、浅谈MongoDB中几种不同查询方法1.findMongoDB使用find来进行查询.查询就是返回一个集合中文档的子集,子集合的范围从0个文档到整个集合.find的第一个参数决定了要返回哪些文档.其形式也是一个文档,说明要查询的细节.空的查询文档{}会匹配集合的全部内容.要是不指定查询文档,默认是{}.如:db.users.find()返回集合users中的所有内容.向查询文档中添加键值对,就意味着添加了查询条件.对绝大多数类型来说,整数匹配整数,布尔类型匹配布尔类型,字符串匹配字符串.2.指定返回的键有时并不需
2、要返回文档中的所有键值对返回.可以通过find或findOne的第二个参数来指定要返回的键.这样做能节省传输的数据量,又能节省客户端解码文档的时间和内存消耗.1db.users.findOne({"name":"refactor"},{"age":1,"sex":1})只会将键为_id,age,sex的数据返回."_id"键总是会被返回.也可以用第二个参数来剔除查询结果中的某个键值对.如:键name不会显示在返回的结果中1db.users.findOne({"name":"refactor"},{"name":0
3、})只会将键为age,sex的数据返回."_id"键是不会返回的2db.users.findOne({"name":"refactor"},{"age":1,"sex":1,"_id":0})3.查询条件"$lt","$lte","$gt","$gte"分别对应<,<=,>,>=如:查询age>=18<=30db.users.find({"age":{"$gte":18,"$lte":30}})向文档增加键birthday3db.users.update(4{"name":"refactor"},5{6"$set
4、":7{8"birthday":newDate("1989/10/26")9}10}11)查询birthday日期是1990-1-1之前的人1db.users.find({"birthday":{"$lt":newDate("1990/01/01")}})使用"$ne"查出所有name不等refactor1的文档,注意文档中不存在键name的文档也会被查出来2db.users.find({"name":{"$ne":"refactor1"}})使用or查询MongoDB可以使用"$in","$or"使用"$in"
5、查询出pageViews为10000,20000的数据3db.users.find({pageViews:{"$in":[10000,20000]}})"$in"可以指定不同类型的条件和值,如正在将用户的ID号迁移成用户名的过程中,要做到两者兼顾的查询:4db.users.find({"user_id":{"$in":[12345,"refactor"]}})这会匹配user_id为12345和"refactor"的文档.要是"$in"的数组只有一个值和直接匹配这个值效果是一样的.5db.users.find({
6、"pageViews":{"$in":[10000]}})6db.users.find({"pageViews":10000})使用"$nin"返回与数组中所有条件都不匹配的文档如查出所有pageViews不等10000,20000的文档,注意文档中不存在键pageViews的文档也会被查出来1db.users.find({"pageViews":{"$nin":[10000,20000]}})"$in"能对单个键进行or查询.使用"$or"2db.users.find(3{4"$or":5[6{"pageVie
7、ws":{"$in":[10000,20000]}},7{"url":"http://www.cnblogs.com/refactor"}8]9}10)这将查询出pageViews是10000,20000或url是http://www.cnblogs.com/refactor的文档.注意:使用普通的and查询时,要尽量将最苛刻的条件放在前面.使用"$not""$not"可以用在任何条件之上.如:11db.users.find(12{"id_num":{"mod":[5,1]}}13)这会查询出id_num取模后值
8、为1的文档.14db.users.find(15{"id_num":{"$not":{"mod":[1,5]}}}1)4.条件句的规则在查询中,"$lt"在内层文档,在更新中"$inc"是外层文档的键.条件句是内层文档的键,修改器是外层文档的键.可对一个键应用多个条件,但一个键不能对应多个更新修改器.5.特定于类型的查询null可以匹配自身,而且可以匹配"不存在的"能查出