2015-06-08 140 views
1

我有一個文件:MongoDB的查詢

{ 
    'name':'XYZ', 
    'address':'Street 21', 
    'phone': { 
     'home': [123456, 456123] 
    }, 
    'qualification': { 
     'primary': [ 
      ['AB','75'], 
      ['CD','80'], 
      ['EF','50'] 
     ] 
    } 
} 

簡單的查詢會是這樣:

n = collection.find({'name':'XYZ'}) 

我可以在'phone.home'子文檔鑰匙取出,用列表文件像這樣:

list1 = [123456] 
n = collection.find({'phone.home':{'$in': list1}}) 

我被困在如何使用qualification鍵查詢集合。假設我有是「AB」或「75」(一次僅是其中之一),我無法彌補的查詢,比如我只有以下列表1:

list1 = ['AB'] 

n = collection.find({'qualification.primary':{'$in':list1}}) 

這肯定是不會放棄我期望的結果。任何指導將不勝感激!

回答

3

使用$elemMatch兩次查詢爲:

db.collectionName.find(
    { 
     "qualification.primary":{ "$elemMatch": { "$elemMatch":{ "$in": ["AB"] }}} 
    }, 
    { "qualification.primary.$":1 } 
)