javascript - 如何通过多个条件 Mongoose 在数组中仅查找一个对象

标签 javascript database mongodb mongoose

我收藏了许多文档。每个文档都有 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 它仅返回数组元素,我想要带有其余文档参数的结果,例如 houseNumbername。怎么做?

document example

最佳答案

示例显示:

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/

相关文章:

ruby - Mongo Ruby 驱动程序 #find() 指定字段值

node.js - 使用 Firebase 进行身份验证,使用 MongoDB 进行数据库

javascript - 如何使用 JSF 和 openfaces 定期刷新部分页面

javascript - JSON回调问题

javascript - Bootstrap carousel next prev 按钮控件

database - 拉维尔 4 : Working with relationships in seeds

javascript - iOS 和安卓 webview : how to close webview and go back to App?

PHP 数据库查询而不是使用 0 和 1 使用 true 或 false/paid 或 unpaid

MySQL - SEC_TO_TIME 给出相同的结果,无论组如何

javascript - Mongoose 一对多,如何获取类别的字段值