"features" : {
"en" : [
{
"translatable" : true,
"capacity " : [
"128GB",
"256GB"
]
},
{
"translatable" : true,
"material " : [
"Glass",
"Aluminium"
]
}
]
}
我在使用此查询时发现 'capacity': '128GB'
db.getCollection('products').find({
'features.en' : {
$elemMatch : {
'capacity' : {
$in : ['128GB']
}
}
}
})
但不取。
如果我查询 'translatable':true
db.getCollection('products').find({
'features.en' : {
$elemMatch : {
'translatable' : true
}
}
})
最佳答案
您的输入文档中有一个棘手的 TYPO - 所以请检查 capacity 末尾是否有空格
db.prod.aggregate([{
$match : {
"features.en.capacity " : "128GB"
}
},
]).pretty()
要仅获取满足您的条件的数组元素,您可以使用此聚合查询:
db.prod.aggregate([{
$unwind : "$features.en"
}, {
$match : {
"features.en.translatable" : true
}
}, {
$match : {
"features.en.capacity " : "128GB"
}
},
]).pretty()
关于mongodb - 在对象中查找数组元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37162088/