mongodb查询使用$ in作为列表列表

时间:2015-06-08 11:07:00

标签: mongodb mongodb-query

我有一份文件:

{
    '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' (一次只有其中一个),我无法弥补查询,例如我只有以下list1:

list1 = ['AB']

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

这绝对不能给我想要的结果。任何指导将不胜感激!

1 个答案:

答案 0 :(得分:3)

使用$elemMatch两次查询:

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