我收藏了许多文档。每个文档都有 houseNumber
参数和 items
数组。
我需要通过 houseNumber
找到正确的文档,然后通过 sku
属性在 items 数组中找到正确的 obj。
这是我的表现:
StockLimitation.find({houseNumber: 2, 'items': {
$elemMatch : { sku: 'YO-FA-01256-00' }
}}, (err, data) => {
if (err) console.log(err)
console.log(data)
});
问题是整个项目数组是从实际文档返回的,但我只需要一个匹配的对象。有解决办法吗?
更新
可能这是一个解决方案:Retrieve only the queried element in an object array in MongoDB collection
BUT 它仅返回数组元素,我想要带有其余文档参数的结果,例如 houseNumber
和 name
。怎么做?
最佳答案
示例显示:
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
}}
])
关于javascript - 如何通过多个条件 Mongoose 在数组中仅查找一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49534759/