具有组合结果的元素的Mongodb查找数组

奥格延·克拉杰吉(Ognjen Kljajic)

这是我的两个文件

订购文件:

{
   "_id":"02a33b9a-284c-4869-885e-d46981fdd679",
   "context":{
      "products":[
         {
         "id": "e68fc86a-b4ad-4588-b182-ae9ee3db25e4",
         "version": "2020-03-14T13:18:41.296+00:00"
         }
      ],
   },
}

产品文件:

{
   "_id":"e68fc86a-b4ad-4588-b182-ae9ee3db25e4",
   "context":{
      "name": "My Product",
      "image": "someimage"
   },
}

因此,我尝试在订单文档中查找产品,但结果应包含组合字段,如下所示:

"products":[
             {
             "_id": "e68fc86a-b4ad-4588-b182-ae9ee3db25e4",
             "version": "2020-03-14T13:18:41.296+00:00",
             "name": "My Product",
             "image": "someimage"
             }
          ],

不确定如何执行此操作,应该在查询之外还是在内部执行?这是我的汇总

Orders.aggregate([
{
   "$lookup":{
      "from":"products",
      "let":{
         "products":"$context.products"
      },
      "pipeline":[
         {
            "$match":{
               "$expr":{
                  "$in":[
                     "$_id",
                     "$$products.id"
                  ]
               }
            }
         },
         {
            "$project":{
               "_id":0,
               "id":1,
               "name":"$context.name"
            }
         }
      ],
      "as":"mergedProducts"
   }
},
{
   "$project":{
      "context":"$context",
      "mergedProducts":"$mergedProducts"
   }
},
]);
米克尔

您需要$lookup通过运行$ map$ arrayElemAt来运行该映射,从两个数组中获取一对,然后应用$ mergeObjects来获得一个对象:

db.Order.aggregate([
    {
        $lookup: {
            from: "products",
            localField: "context.products.id",
            foreignField: "_id",
            as: "productDetails"
        }
    },
    {
        $addFields: {
            productDetails: {
                $map: {
                    input: "$productDetails",
                    in: {
                        _id: "$$this._id",
                        name: "$$this.context.name"
                    }
                }
            }
        }
    },
    {
        $project: {
            _id: 1,
            "context.products": {
                $map: {
                    input: "$context.products",
                    as: "prod",
                    in: {
                        $mergeObjects: [
                            "$$prod",
                            { $arrayElemAt: [ { $filter: { input: "$productDetails", cond: { $eq: [ "$$this._id", "$$prod.id" ] } } }, 0 ] }
                        ]
                    }
                }
            }
        }
    }
])

蒙哥运动场

最后一步的目标是采用两个数组:productsproductDetails(的输出$lookup)并找到它们之间的匹配项。我们知道总会有一场比赛,所以我们只能得到一项$arrayElemAt 0作为输出,$map将包含“合并”文档的单个数组。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查找数组元素的所有组合(JavaScript)

来自分类Dev

Mongodb查询:查找具有给定范围内数组所有元素的文档

来自分类Dev

给定数组查找给出求和的元素的所有组合

来自分类Dev

在具有隐藏元素的数组中查找多数元素

来自分类Dev

在具有隐藏元素的数组中查找多数元素

来自分类Dev

查找具有特定键名前缀的数组元素

来自分类Dev

在某些元素具有多个维度的数组中查找值

来自分类Dev

在具有更大键的对象数组中查找元素

来自分类Dev

查询以查找在数组中具有额外元素的文档

来自分类Dev

Mongoose 查找具有限制的数组元素

来自分类Dev

MongoDB:查找具有给定子文档数组的文档

来自分类Dev

MongoDB:从单个文档中查找所有匹配的数组元素

来自分类Dev

如何从数组中删除子数组中具有相同元素的所有组合?

来自分类Dev

使用最少的数组查找数组组合以覆盖所有元素

来自分类Dev

组合两个单独的数组,每个数组具有不同数量的元素

来自分类Dev

MongoDB:按数组元素查找元素

来自分类Dev

如何获得具有不同数量元素的n个数组的所有可能组合?

来自分类Dev

如何获得具有不同数量元素的n个数组的所有可能组合?

来自分类Dev

从元素数组中查找哪个元素具有特定类的更好方法

来自分类Dev

如何查找数组是否包含具有相同元素的其他数组

来自分类Dev

自动布局具有不同的元素组合

来自分类Dev

MongoDB。查找元素数组包含所需元素的所有文档

来自分类Dev

MongoDB查找具有空数组或数组匹配项的记录

来自分类Dev

查找文档,其中数组的所有元素都具有特定值

来自分类Dev

查找文档,其中数组的所有元素都具有特定值

来自分类Dev

php-查找具有相同数组键的所有元素的总和时出错

来自分类Dev

获取数组中元素的所有组合

来自分类Dev

PHP列出数组元素的所有组合

来自分类Dev

MongoDB查找查询数组以元素开头

Related 相关文章

  1. 1

    查找数组元素的所有组合(JavaScript)

  2. 2

    Mongodb查询:查找具有给定范围内数组所有元素的文档

  3. 3

    给定数组查找给出求和的元素的所有组合

  4. 4

    在具有隐藏元素的数组中查找多数元素

  5. 5

    在具有隐藏元素的数组中查找多数元素

  6. 6

    查找具有特定键名前缀的数组元素

  7. 7

    在某些元素具有多个维度的数组中查找值

  8. 8

    在具有更大键的对象数组中查找元素

  9. 9

    查询以查找在数组中具有额外元素的文档

  10. 10

    Mongoose 查找具有限制的数组元素

  11. 11

    MongoDB:查找具有给定子文档数组的文档

  12. 12

    MongoDB:从单个文档中查找所有匹配的数组元素

  13. 13

    如何从数组中删除子数组中具有相同元素的所有组合?

  14. 14

    使用最少的数组查找数组组合以覆盖所有元素

  15. 15

    组合两个单独的数组,每个数组具有不同数量的元素

  16. 16

    MongoDB:按数组元素查找元素

  17. 17

    如何获得具有不同数量元素的n个数组的所有可能组合?

  18. 18

    如何获得具有不同数量元素的n个数组的所有可能组合?

  19. 19

    从元素数组中查找哪个元素具有特定类的更好方法

  20. 20

    如何查找数组是否包含具有相同元素的其他数组

  21. 21

    自动布局具有不同的元素组合

  22. 22

    MongoDB。查找元素数组包含所需元素的所有文档

  23. 23

    MongoDB查找具有空数组或数组匹配项的记录

  24. 24

    查找文档,其中数组的所有元素都具有特定值

  25. 25

    查找文档,其中数组的所有元素都具有特定值

  26. 26

    php-查找具有相同数组键的所有元素的总和时出错

  27. 27

    获取数组中元素的所有组合

  28. 28

    PHP列出数组元素的所有组合

  29. 29

    MongoDB查找查询数组以元素开头

热门标签

归档