阅读(227) (1)

MongoDB 查询文档

2017-01-09 19:13:18 更新

MongoDB教程 - MongoDB查询文档


要从MongoDB集合中查询数据,请使用MongoDB的find()方法。

语法

以下代码显示了find()方法的语法

>db.COLLECTION_NAME.find()

find()方法返回所有文档。

要以格式化的方式显示结果,请使用pretty()方法。

>db.mycol.find().pretty()
>db.mycol.find().pretty()
{
   "_id": ObjectId(2df22ad2222c),
   "title": "MongoDB Overview", 
   "description": "MongoDB is no sql database",
   "url": "http://www.zijiebao.com",
   "tags": ["mongodb", "database", "NoSQL"],
   "comments": "100"
}
>

findOne()方法只返回一个文档。

Where 条件

下表显示如何对具有条件的文档执行查询。

操作语法例子RDBMS 等效
相等 {<key>:<value>} db.mycol.find({"by":"zijiebao"}).pretty() where by = 'w3cscjool'
少于 {<key>:{$lt:<value>}} db.mycol.find({"comments":{$lt:50}}).pretty() where comments < 50
小于等于 {<key>:{$lte:<value>}} db.mycol.find({"comments":{$lte:50}}).pretty() where comments <= 50
大于 {<key>:{$gt:<value>}} db.mycol.find({"comments":{$gt:50}}).pretty() where comments > 50
大于等于 {<key>:{$gte:<value>}} db.mycol.find({"comments":{$gte:50}}).pretty() where comments >= 50
不等于 {<key>:{$ne:<value>}} db.mycol.find({"comments":{$ne:50}}).pretty() where comments != 50

MongoDB AND

要在MongoDB中使用AND逻辑,请通过find()方法中的“,”分隔多个键,如下所示。

>db.mycol.find({key1:value1, key2:value2}).pretty()

以下代码返回其字段为zijiebao和title字段为的文档

>db.mycol.find({"by":"zijiebao","title": "MongoDB"}).pretty()
{
   "_id": ObjectId(2df22ad2222c),
   "title": "MongoDB", 
   "description": "MongoDB is no sql database",
   "by": "java2s",
   "url": "http://www.zijiebao.com",
   "tags": ["mongodb", "database", "NoSQL"],
   "comments": "100"
}
>

它等于where子句是 where by='java2s' AND title='MongoDB Overview'.。

MongoDB OR

要根据OR条件查询文档,请使用 $or关键字,如下所示:

>db.mycol.find(
   {
      $or: [
       {key1: value1}, {key2:value2}
      ]
   }
).pretty()

以下查询返回的字段为'zijiebao'或标题字段为“MongoDB Overview”的文档。

>db.mycol.find({$or:[{"by":"java2s"},{"title": "MongoDB Overview"}]}).pretty()
{
   "_id": ObjectId(2df22ad2222c),
   "title": "MongoDB Overview", 
   "description": "MongoDB is no sql database",
   "by": "java2s",
   "url": "http://www.zijiebao.com",
   "tags": ["mongodb", "database", "NoSQL"],
   "comments": "100"
}
>

使用AND和OR一起

以下示例返回注释大于100并且标题为'MongoDB概述'或者为‘zijiebao’的文档。

>db.mycol.find("comments": {$gt:10}, $or: [{"by": "java2s"}, {"title": "MongoDB Overview"}] }).pretty()
>

等价sql是 'where comments>10 AND (by = 'java2s' OR title = 'MongoDB Overview')'。

MongoDB 投影

MongoDB投影是只选择必要的数据而不是整个文档。

MongoDB的find()方法接受第二个可选参数,它是要返回的字段列表。默认情况下,MongoDB find()方法返回文档中的所有字段。要仅选择必填字段,请设置值为1或0的字段列表。1值显示字段,而0用于隐藏字段。

find()方法与投影的语法如下。

>db.COLLECTION_NAME.find({},{KEY:1})

以下示例显示文档的标题。

>db.mycol.find({},{"title":1,_id:0})
>