我正在尝试使用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"})
但这只会按照第一个条件进行过滤,并且不会被"等级过滤掉。"它确切地说是如何在文档中列出的,但是我无法让它工作。
答案 0 :(得分:4)
问题出在第二个条件。 grades
是subarray 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
上具有特定值的记录。它似乎对我有用。