NoSQL note.05

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、查询操作符

NoSQL note.05

操作 格式 范例 RDBMS类似语句

8、AND查询

find() 方法可以传入多个键(key),每个键(key)以逗号隔开。相当于and
db.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
上一篇:云图说|华为云自研云数据库 GaussDB NoSQL,兼容多款 NoSQL 接口的数据库服务


下一篇:分布式NoSQL列存储数据库Hbase