首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我有这两个集合,即内向和外向,两个集合都有类似的嵌入式子文档,包含产品、批次和数量字段。

我有这两个集合,即内向和外向,两个集合都有类似的嵌入式子文档,包含产品、批次和数量字段。
EN

Stack Overflow用户
提问于 2020-06-08 08:18:49
回答 1查看 27关注 0票数 1

内向收款

代码语言:javascript
运行
复制
{"ord" : 1,
    "products" : [
            {
                    "name" : "apple",
                    "qty" : "10",
                    "batch" : "jun-2021"
            },
            {
                    "name" : "banana",
                    "qty" : 20,
                    "batch" : "jan-2021"
            }
    ]

}

向外收款

代码语言:javascript
运行
复制
{
    "_id" : ObjectId("5edde5487957d9efea972a74"),
    "inv" : 1,
    "products" : [
            {
                    "name" : "apple",
                    "qty" : 13,
                    "batch" : "jun-2021"
            }
    ]

}

现在,我想对特定产品和批(分组)两个集合执行实际库存数量检查。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-08 12:56:00

你可以这样做:

  1. 我们加入他们的inward.ord = outward.inv条件。
  2. 平坦的products场。
  3. 分组按产品的namebatch求和qty值。
代码语言:javascript
运行
复制
db.inward.aggregate([
  {
    $lookup: {
      from: "outward",
      let: {
        ord: "$ord",
        products: "$products"
      },
      pipeline: [
        {
          $match: {
            $expr: {
              $eq: [ "$$ord", "$inv" ]
            }
          }
        },
        {
          $project: {
            products: {
              $concatArrays: [
                "$$products",
                "$products"
              ]
            }
          }
        },
        {
          $unwind: "$products"
        },
        {
          $replaceWith: "$products"
        }
      ],
      as: "products"
    }
  },
  {
    $unwind: "$products"
  },
  {
    $group: {
      _id: {
        batch: "$products.batch",
        name: "$products.name"
      },
      qty: {
        $sum: "$products.qty"
      }
    }
  }
])

MongoPlayground

注:你需要有MongoDB v4.2

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62257832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档