mongodb 使用 $in 查询列表列表
mongodb query using $in for list of lists
我有一个文档为:
{
'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}})
这绝对不是我想要的结果。任何指导将不胜感激!
使用$elemMatch
两次查询为:
db.collectionName.find(
{
"qualification.primary":{ "$elemMatch": { "$elemMatch":{ "$in": ["AB"] }}}
},
{ "qualification.primary.$":1 }
)
我有一个文档为:
{
'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}})
这绝对不是我想要的结果。任何指导将不胜感激!
使用$elemMatch
两次查询为:
db.collectionName.find(
{
"qualification.primary":{ "$elemMatch": { "$elemMatch":{ "$in": ["AB"] }}}
},
{ "qualification.primary.$":1 }
)