2015-06-08 142 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 } 
)