Mongo数据库查询多个条件

时间:2015-09-28 21:27:47

标签: python mongodb pymongo

我正在尝试使用pymongo基于MongoDB中的两个条件进行简单查询。

我正在使用教程文档中的示例餐馆数据集。我有:

from pymongo import MongoClient
import pymongo
import pandas as pd

client = MongoClient()

db = client.test

cursor = db.restaurants.find({"$and":[{'borough':"Manhattan"},{"grades":{'grade':"A"}}]}

for record in cursor:
    print record

我只是想在曼哈顿的所有餐厅打印等级为B.''但这没有结果。我也试过

cursor = db.restaurants.find({"borough":"Manhattan", "grades.grade":"B"})

但这只会按照第一个条件进行过滤,并且不会被"等级过滤掉。"它确切地说是如何在文档中列出的,但是我无法让它工作。

2 个答案:

答案 0 :(得分:4)

问题出在第二个条件。 gradessubarray of grades,使用$elemMatch

db.restaurants.find({"$and": [{"borough": "Manhattan"}, {"grades": {"$elemMatch": {"grade": "A"}}}]})

适合我。

答案 1 :(得分:1)

我遇到了类似的问题,它使用以下语法对我有用:

result = db.mycollection.find({"$and": [{"key1": value1}, {"key2": value2}]})

我在 key1 下有多个具有相同值的记录,但我想要唯一一个在 key2 上具有特定值的记录。它似乎对我有用。