我在这个系列中有很多文件。每个文档都有houseNumber
参数和items
数组。
我需要通过houseNumber
找到一个正确的文档,然后通过sku
prop在items数组中找到正确的obj。
这是我的表现:
StockLimitation.find({houseNumber: 2, 'items': {
$elemMatch : { sku: 'YO-FA-01256-00' }
}}, (err, data) => {
if (err) console.log(err)
console.log(data)
});
问题是整个项目数组是从实际的doc返回的,但我只需要一个匹配的对象。有解决方案吗?
更新
这可能是一个解决方案:Retrieve only the queried element in an object array in MongoDB collection
但是它只返回数组元素,我希望结果包含其他文档参数,例如houseNumber
和name
。怎么做?
答案 0 :(得分:1)
示例显示:
db.test.aggregate([
{$match: {'houseNumber': '125'}},
{$project: {
shapes: {$filter: {
input: '$items',
as: 'item',
cond: {$eq: ['$$item.sku', 'XYZ']}
}},
_id: 0, //0 means do not show the field
houseNumber:1,
number:1
}}
])