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条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

使用 ObjectId 的 mongodb 聚合查找

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

Mongo聚合未更新实际文档

来自分类Dev

如何替换MongoDB文档中数组的所有元素?

来自分类Dev

如何替换MongoDB中的整个子文档数组?

来自分类Dev

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

来自分类Dev

MongoDB提取子文档作为实际文档

来自分类Dev

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

来自分类Dev

MongoDB聚合,包括丢失的文档

来自分类Dev

MongoDB聚合:创建子文档

来自分类Dev

MongoDB子文档键聚合

来自分类Dev

在MongoDB中聚合异构文档

来自分类Dev

mongodb中的嵌套文档聚合

来自分类Dev

MongoDB 文档设置和聚合

来自分类Dev

MongoDB使用聚合连接两个字段,其中实际字段位于数组中

来自分类Dev

如何使用MongoDB的$ lookup聚合替换整个文档中包含id的属性?

来自分类Dev

如何替换ObjectId参考。与来自MongoDB的实际对象一起使用(最好在服务器端)?

来自分类Dev

MongoDB-在ObjectId上聚合$ match

来自分类Dev

Mongodb聚合从文档内部检索文档

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

    使用 ObjectId 的 mongodb 聚合查找

  5. 5

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

  6. 6

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

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

    Mongo聚合未更新实际文档

  14. 14

    如何替换MongoDB文档中数组的所有元素?

  15. 15

    如何替换MongoDB中的整个子文档数组?

  16. 16

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

  17. 17

    MongoDB提取子文档作为实际文档

  18. 18

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

  19. 19

    MongoDB聚合,包括丢失的文档

  20. 20

    MongoDB聚合:创建子文档

  21. 21

    MongoDB子文档键聚合

  22. 22

    在MongoDB中聚合异构文档

  23. 23

    mongodb中的嵌套文档聚合

  24. 24

    MongoDB 文档设置和聚合

  25. 25

    MongoDB使用聚合连接两个字段,其中实际字段位于数组中

  26. 26

    如何使用MongoDB的$ lookup聚合替换整个文档中包含id的属性?

  27. 27

    如何替换ObjectId参考。与来自MongoDB的实际对象一起使用(最好在服务器端)?

  28. 28

    MongoDB-在ObjectId上聚合$ match

  29. 29

    Mongodb聚合从文档内部检索文档

热门标签

归档