一、查询文档
MongoDB 查询文档使用 find() 方法。以非结构化的方式来显示所有文档。
MongoDB 查询数据的语法格式如下:
1
|
db.collection.find(query, projection) |
- query :可选,使用查询操作符指定查询条件
- projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:
1
|
db.col.find().pretty() |
pretty() 方法以格式化的方式来显示所有文档。
实例
以下实例我们查询了集合 col 中的数据:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
> db.col.find().pretty() { "_id" : ObjectId( "56063f17ade2f21f36b03133" ), "title" : "MongoDB 教程" , "description" : "MongoDB 是一个 Nosql 数据库" , "by" : "菜鸟教程" , "url" : "http://www.runoob.com" , "tags" : [ "mongodb" , "database" , "NoSQL" ], "likes" : 100 } |
除了 find() 方法之外,还有一个 findOne() 方法,它只返回一个文档。
二、条件操作符
MongoDB中条件操作符有:
- (>) 大于 - $gt
- (<) 小于 - $lt
- (>=) 大于等于 - $gte
- (<= ) 小于等于 - $lte
- (!=)不等于 –$ne
MongoDB 与 RDBMS Where 语句比较
如果你熟悉常规的 SQL 数据,通过下表可以更好的理解 MongoDB 的条件语句查询:
举例:使用 (<) 和 (>) 查询 - $lt 和 $gt
如果你想获取"col"集合中 "likes" 大于100,小于 200 的数据,你可以使用以下命令:
1
|
db.col.find({likes : {$lt :200, $gt : 100}}) |
类似于SQL语句:
1
|
Select * from col where likes>100 AND likes<200; |
输出结果:
1
2
3
|
> db.col.find({likes : {$lt :200, $gt : 100}}) { "_id" : ObjectId( "56066549ade2f21f36b0313b" ), "title" : "Java 教程" , "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。" , "by" : "菜鸟教程" , "url" : "http://www.runoob.com" , "tags" : [ "java" ], "likes" : 150 } > |
三、AND 条件
MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。
语法格式如下:
1
|
db.col.find({key1:value1, key2:value2}).pretty() |
以下实例通过 by 和 title 键来查询 菜鸟教程 中 MongoDB 教程 的数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
> db.col.find({ "by" : "菜鸟教程" , "title" : "MongoDB 教程" }).pretty() { "_id" : ObjectId( "56063f17ade2f21f36b03133" ), "title" : "MongoDB 教程" , "description" : "MongoDB 是一个 Nosql 数据库" , "by" : "菜鸟教程" , "url" : "http://www.runoob.com" , "tags" : [ "mongodb" , "database" , "NoSQL" ], "likes" : 100 } |
以上实例中类似于 WHERE 语句:WHERE by='菜鸟教程' AND sql" id="highlighter_86801">
db.col.find(
{
$
or
: [ {key1: value1}, {key2:value2}
]
}
).pretty()