阅读(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}) >