【问题标题】:Meteor Mongo Aggregate $lookup specify output fieldMeteor Mongo Aggregate $lookup 指定输出字段
【发布时间】:2018-03-20 09:49:09
【问题描述】:

我有两个系列:产品和库存。 这两个集合之间的关系是一对一的。

产品结构:

{
_id:
sku: 
....
}

股票结构:

{
_id:
sku:
availability: []
....
}

我的查询:

Products.aggregate([
        {
          $match: cAux
        }, {
          $lookup: {
            from: "Stocks",
            localField: "sku",
            foreignField: "sku",
            as: "availability"
          }
        }, {
          $sort: PRODUCT_SORT
        }
      ]);

这个“加入”的结果是

{
_id:
sku: 
availability: {_id:, sku:, **availabity**: []}
...
}

加入没问题,但我只想加入可用性数组字段,而不是整个 Stock 文档。实现这一目标的最佳方法是什么?任何帮助将不胜感激。

【问题讨论】:

  • 所以看起来您只需要从 Stock 集合中输出特定字段?如果是,您可以使用 {$addFields:{"availability":"$availability.availability"}}
  • @Veeram 不幸的是,该操作在我的 mongo 版本中不可用。但我找到了解决办法。我将其发布为正确答案。谢谢!

标签: mongodb meteor aggregation-framework


【解决方案1】:

解决方案

Products.aggregate([
        {
          $match: cAux
        }, {
          $lookup: {
            from: "Stocks",
            localField: "sku",
            foreignField: "sku",
            as: "availability"
          }
        }, {
          $project: {
            ...PRODUCT_FIELDS,
            availability: {
              $arrayElemAt: ['$availability.availability', 0]
            }
          }
        }, {
          $sort: PRODUCT_SORT
        }
      ]);

【讨论】:

    猜你喜欢
    • 2019-11-07
    • 2016-06-13
    • 2017-06-19
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多