( 九 )、MongoDB 查询操作
( 九 )、MongoDB 查询操作
官网示例: https://docs.mongodb.com/manual/tutorial/query-documents/
1、基础查询
1.1、MongoDB 查询文档使用 find() 方法。find() 方法以非结构化的方式来显示所有文档。
db.collectionName.find(query, projection)
- query :可选,使用查询操作符指定查询条件
- projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
1.2、如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:
db.col.find().pretty()
除了 find() 方法之外,还有一个 findOne() 方法,它只返回一个文档。
2、MongoDB 与 RDBMS Where 语句比较
如果你熟悉常规的 SQL 数据,通过下表可以更好的理解 MongoDB 的条件语句查询:
操作 | 格式 | 范例 | RDBMS中的类似语句 |
---|---|---|---|
等于 | {<key>:<value> } |
db.col.find({"by":"test01"}).pretty() |
where by = 'test01' |
小于 | {<key>:{$lt:<value>}} |
db.col.find({"age":{$lt:50}}).pretty() |
where age< 50 |
小于或等于 | {<key>:{$lte:<value>}} |
db.col.find({"age":{$lte:50}}).pretty() |
where age<= 50 |
大于 | {<key>:{$gt:<value>}} |
db.col.find({"age":{$gt:50}}).pretty() |
where age> 50 |
大于或等于 | {<key>:{$gte:<value>}} |
db.col.find({"age":{$gte:50}}).pretty() |
where age>= 50 |
不等于 | {<key>:{$ne:<value>}} |
db.col.find({"age":{$ne:50}}).pretty() |
where age!= 50 |
3、MongoDB AND 条件
MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。
语法格式如下:
>db.col.find({key1:value1, key2:value2}).pretty()
示例:
db.col.find({"userName":"张三", "age":"23"}).pretty()
以上实例中类似于 WHERE 语句:WHERE userName = '张三' AND age = '23'
4、MongoDB OR 条件
MongoDB OR 条件语句使用了关键字 $or,语法格式如下:
>db.col.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
示例:
db.col.find({$or: [{"userName": "张三"}, {"age": "23"}]}).pretty()
以上实例中类似于 WHERE 语句:WHERE userName = '张三' OR age = '23'
5、AND 和 OR 联合使用
类似常规 SQL 语句为: where age > 30 AND (userName = '张三' OR sex = '男')
db.col.find({"age": {$gt:30}, $or: [{"userName": "张三"}, {"sex": "男"}]}).pretty()
6、Limit 与 Skip 方法
6.1、Limit 方法: 如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。
>db.COLLECTION_NAME.find().limit(NUMBER)
6.2、Skip() 方法
我们除了可以使用limit()方法来读取指定数量的数据外,还可以使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。
>db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
注:skip()方法默认参数为 0 。
7、MongoDB 排序
在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。
sort()方法基本语法如下所示:
>db.COLLECTION_NAME.find().sort({KEY:1})
示例:按照年龄降序
>db.col.find({},{"userName":1}).sort({"age": -1})
"userName": 1 表示显示该字段, 如果是 0 表示不显示, 或者 “userName”: true | false