2015-09-28 119 views
3

我想根據MongoDB中使用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

您是否可以編輯您的問題以包含您期望找到的示例文檔? – JohnnyHK

回答

4

問題出在第二種情況。 gradessubarray of grades,使用$elemMatch

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

爲我工作。

+0

沒有骰子。仍然拉回所有的成績。 – user2907249