MongoDB聚合以实际文档替换ObjectId数组

托马斯·斯凯特加德·汉森

假设我们有这个db.orders文档集合和一个文档:

{"_id": "5ef62e0c586c78491530e4d5", "items": [{ "description": "desc1", "parts": ["5ef62e0c586c78491530e4d7", "5ef62e0c586c78491530e4d8"] } ], "createdBy": "userId"}

[更正:项目字段现在是一个数组]

另一个db.parts集合包含两个部分文档:

{"_id": "5ef62e0c586c78491530e4d7", "name": "part1" }
{"_id": "5ef62e0c586c78491530e4d8", "name": "part2" }

我想在第一个集合上构建一个聚合,用实际的文档替换parts数组中的ObjectId。结果应为:

{"_id": "5ef62e0c586c78491530e4d5", "items": [{ "description": "desc1", "parts":
  [
    {"_id": "5ef62e0c586c78491530e4d7", "name": "part1" },
    {"_id": "5ef62e0c586c78491530e4d8", "name": "part2" }
  ]
}], "createdBy": "userId"}

任何想法将不胜感激!

瓦利洪

您需要使用$ lookup运算符:

db.orders.aggregate([
  {
    $lookup: {
      from: "parts",
      localField: "items.parts",
      foreignField: "_id",
      as: "parts"
    }
  },
  {
    $project: {
      createdBy: 1,
      items: {
        $map: {
          input: "$items",
          as: "item",
          in: {
            description: "$$item.description",
            parts: {
              $filter: {
                input: "$parts",
                as: "part",
                cond: {
                  $in: [ "$$part._id", "$$item.parts" ]
                }
              }
            }
          }
        }
      }
    }
  }
])

蒙哥运动场

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MongoDB 聚合填充/替换 ObjectId 数组

MongoDB聚合数组文档

如何在MongoDB中聚合文档数组

mongodb $聚合空数组和多个文档

在聚合mongodb中按文档数组排序

嵌入文档数组上的 Mongodb 查找聚合

MongoDB 聚合:用同一文档中数组中的相应对象替换 ID 数组

用python替换嵌套文档数组mongodb

嵌入式文档数组中的MongoDB Aggregate ObjectId

MongoDB用引用的文档替换文档中的ObjectID引用吗?

使用 ObjectId 的 mongodb 聚合查找

MongoDB聚合,将子文档数组转换为单个对象

仅聚合MongoDB文档中数组的现有元素

MongoDB 聚合,查找文档数组中不同值的数量

MongoDB 通过缺少字段聚合过滤子文档数组

查找数组内的所有文档-MongoDB聚合

MongoDB聚合-文档数组中特定值的平均值

如何聚合来自 MongoDB 中不同文档的数组值?

MongoDB 聚合框架分组并与数组中的嵌套文档合并

在多个文档的嵌套数组中聚合 MongoDB 查询

Mongodb和聚合框架。数组的总和与文档的总和

如何使用mongodb聚合转换嵌套数组中的文档

如何使用 mongodb 聚合将文档的值转换为数组?

在MongoDB聚合管道中,如何用数组字段替换root?

MongoDB 更新文档数组并替换为替换文档数组

Mongo聚合未更新实际文档

如何将文档流聚合成具有数组字段的单个文档?(mongodb)

MongoDB-$ filter中的聚合$ filter /子文档中子文档的过滤数组

MongoDB-将数组拆分为多个文档,并用数组的对象替换现有文档