MongoDB查询文档
查询集合所有数据
mongoDB的查询数据语法如下:db.collection_name.find(query,projection)
query :可选,使用查询操作符指定查询条件
projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值,只需省略该参数即可(默认省略)。
使用 pretty() 方法,以格式化的易读的方式显示所有文档,语法格式如下:db.collection_name.find().pretty()
1、查询集合中满足key的数据
可指定显示值:通过对key指定为0或1(0表示不显示,1表示显示指定字段),默认1
// 例:
> db.mycoll.find({"name":"zs"},{"_id":0,"name":0}).pretty()
2、嵌套文档查询
通过 “.” 连接infos和height,并以双引号方式来实现指定嵌套文档的查询。如下:
> db.mycoll.find().pretty()
{
"_id" : ObjectId("606052477626a1f9d32efba8"),
"name" : "zs",
"infos" : {
"height" : 165,
"weight" : 45
}
}
> db.mycoll.find({"infos.height":165})
{ "_id" : ObjectId("606052477626a1f9d32efba8"),"infos" : { "height" : 165, "weight" : 45 } }
3、数组查询
3.1 等价查询
> db.mycoll.find({"email" : [ "123@qq.com", "125@163.com" ]})
//输入整个数组查询
3.2 通过其中一个值查询
> db.mycoll.find({"email" : "125@163.com" })
3.3 通过元素个数查询
> db.mycoll.find({"email" : {$size:2} })
4、null字段查询
先插入一段 null 数据:db.mycoll.insert([{ _id:1 , toy:null },{ _id:2 }])
4.1 查找null字段
> db.mycoll.find({"_id":1,toy:null})
{ "_id" : 1, "toy" : null } // 查找字段
4.2 查找null值(不存在)
> db.mycoll.find({toy:{$exists:false}})
{ "_id" : 2 } //查找的值不存在
5、limit和skip
5.1 limit 返回第一条文档db.mycoll.find().limit(1)
5.2 skip,显示第二条开始的文档db.mycoll.find().skip(2)
6、$in ‘或’ 查询
// 查找_id= 1 或 2的文档
> db.mycoll.find({_id:{$in:[1,2]}})
7、查询操作符
操作 | 格式 | 范例 | RDBMS类似语句 |
---|---|---|---|
8、AND查询
find() 方法可以传入多个键(key),每个键(key)以逗号隔开。相当于anddb.mycoll.find({key1:value1, key2:value2, ..}).pretty()
9、OR 条件
db.mycoll.find({$or : [ {key1:value1} , {key2:value2} ] })
注:$in 是指定同一个key进行或条件匹配, $or 是指定多个key或条件匹配。
10、AND 和 OR 联合使用
db.mycoll.find({key1: value1, $or: [{ key2:value2 },{key3: value3}]})
满足key1的值并且key2或key3
11、正则表达式使用
有一个值为:"title":"redis"
11.1 查询值的固定后一部分db.col.find({title:{$regex:/dis$/}}).pretty()
(值的后一部分为dis)
11.2 查询值的固定前一部分db.col.find({title:{$regex:/^re/}}).pretty()
(值的前一部分为re)
11.3 查询值的任意一部分db.col.find({title:{$regex:/ed/}}).pretty()
(值的任意中间部分为ed)
12.区间条件查找
>db.col.find({likes:{$gt:100,$lt:120}}) //大于100,小于120