如何通过多个条件找到数组中的一个obj mongoose

时间:2018-03-28 12:37:27

标签: javascript database mongodb mongoose

我在这个系列中有很多文件。每个文档都有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

但是它只返回数组元素,我希望结果包含其他文档参数,例如houseNumbername。怎么做?

document example

1 个答案:

答案 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
 }}
])