Mongodb聚合查找2级别,创建了结果的新条目,而不是仅填充具有objectId的列

约翰·克莱默

我已经问过这个问题,但是由于某种原因,有人将其标记为该$ lookup多个级别的副本,而没有$ unwind吗?而且我不明白为什么,我的预期输出是直接填充“租户”字段,并且在针对性文章中,它为汇总结果创建了一个新条目,而不是直接填充列。

但是,这里再次出现:

-房间集合

_id: ObjectId(********)
bedspaces: Array
0: ObjectId("5c98d89c6bd5fc26a4c2851b")
1: ObjectId("5c98d89f6bd5fc26a4c28522")
***
***

-床铺

_id: ObjectId(*********);
number: 1
decks: Array
 0: Object 
     _id: ObjectId("5c98d89c6bd5fc26a4c28520")
     number: 1,
     tenant: ObjectId("5c964ae7f5097e3020d1926c")
     ****
 1: Object 
     _id: ObjectId("5c98d89c6bd5fc26a4c2851e")
     number: 1,
     tenant: ObjectId("5c964b2531bc162fdce64f15")
     ****

-租户集合

 _id: ObjectId("5c964ae7f5097e3020d1926c")
 name: "john doe"
 age: 11,

 _id: ObjectId("5c964b2531bc162fdce64f15")
 name: "jane doe"
 age: 12,

这是我的汇总:

{
  from: 'beds',
  let: { bedspaces: "$bedspaces"},
  pipeline: [
    {
      $match: {
        $expr: {
          $in: ["$_id", "$$bedspaces"]
        }
      }
    },
    {
      $lookup: {
        from: 'tenants',
        let: {tenant: "$decks.tenant"},
        pipeline: [
         {
          $match: {
            $expr: {
              $in: ["$_id", "$$tenant"]
            }
          }
         }
        ],
        as: 'tenant',
      }
    }
  ],
  as: 'bedspaces'
}

输出:在此处输入图像描述

我想要的是用其匹配的_id租户集合填充租户字段。

PS这有可能吗?

阿什

如果您已阅读该答案,则可能会得到重复的原因。

同时,您可以使用下面的汇总,但如果您仍然可以通过该答案及其说明,则更好。

Room.aggregate([
  { "$lookup": {
    "from": "beds",
    "let": { "bedspaces": "$bedspaces" },
    "pipeline": [
      { "$match": { "$expr": { "$in": [ "$_id", "$$bedspaces" ] } } },
      { "$unwind": "$decs" },
      { "$lookup": {
        "from": "tenants",
        "let": { "tenant": "$decks.tenant" },
        "pipeline": [
          { "$match": { "$expr": { "$eq": [ "$_id", "$$tenant" ] } } }           
        ],
        "as": "decks.tenant"
      }},
      { "$unwind": "$decks.tenant" },
      { "$group": {
        "_id": "$_id",
        "decks": { "$push": "$decs" },
        "number": { "$first": "$number" }
      }}
    ],
    "as": "bedspaces"
  }}
])

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Pandas - 创建具有聚合结果的列

来自分类Dev

在同一级别创建2个子剑道网格

来自分类Dev

使用 ObjectId 的 mongodb 聚合查找

来自分类Dev

具有查找功能的mongodb聚合

来自分类Dev

具有$ lookup的MongoDB聚合仅显示一个字段的结果

来自分类Dev

同一级别中的3列

来自分类Dev

如何返回仅显示具有非空条目的列的mysql搜索结果

来自分类Dev

仅针对具有过滤器的排序查询结果聚合脚本,而不是完整数据集

来自分类Dev

具有3个级别的MongoDB嵌套查找

来自分类Dev

使用dplyr查找具有相同值的下2行并将行粘贴到原始条目后面的新列中

来自分类Dev

在特定列[R]中仅创建具有非NA的新列

来自分类Dev

R:根据其他两列的标准,创建一个具有多个类别(级别)的新列

来自分类Dev

跨多个向量聚合,保留仅具有特定向量NA的条目

来自分类Dev

我根据获取的数据创建了输入字段,但如何仅针对具有值的输入字段

来自分类Dev

如何对具有相同ID的新条目和最后插入条目进行求和,然后在新条目中插入结果

来自分类Dev

如何对具有相同ID的新条目和最后插入条目进行求和并在新条目中插入结果

来自分类Dev

当所有子模块处于同一级别时,git-svn分支

来自分类Dev

如何在仅具有ID列的SQLite表中创建新行?

来自分类Dev

角度2-从服务到组件的事件在同一级别

来自分类Dev

如何查找具有此类的元素而不是具有此类的元素的子级

来自分类Dev

具有SubFactory字段的DjangoModelFactory不会创建新条目,而是指向现有条目

来自分类Dev

ElasticSearch 2.1.0-具有“和”量度的深度“子级”聚合返回空结果

来自分类Dev

如何在多维数组中查找相同的值并创建仅具有唯一值的新数组?

来自分类Dev

如何查找仅具有价值的MongoDB文档?

来自分类Dev

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

来自分类Dev

从String到ObjectId的Spring数据MongoDb聚合查找

来自分类Dev

创建具有多行的新列

来自分类Dev

BeautifulSoup查找仅带有“点”而不具有“ find()”功能的子级

来自分类Dev

在数组中查找具有特定属性的项目,然后计算数量,然后使用具有各自结果的对象创建新数组

Related 相关文章

  1. 1

    Pandas - 创建具有聚合结果的列

  2. 2

    在同一级别创建2个子剑道网格

  3. 3

    使用 ObjectId 的 mongodb 聚合查找

  4. 4

    具有查找功能的mongodb聚合

  5. 5

    具有$ lookup的MongoDB聚合仅显示一个字段的结果

  6. 6

    同一级别中的3列

  7. 7

    如何返回仅显示具有非空条目的列的mysql搜索结果

  8. 8

    仅针对具有过滤器的排序查询结果聚合脚本,而不是完整数据集

  9. 9

    具有3个级别的MongoDB嵌套查找

  10. 10

    使用dplyr查找具有相同值的下2行并将行粘贴到原始条目后面的新列中

  11. 11

    在特定列[R]中仅创建具有非NA的新列

  12. 12

    R:根据其他两列的标准,创建一个具有多个类别(级别)的新列

  13. 13

    跨多个向量聚合,保留仅具有特定向量NA的条目

  14. 14

    我根据获取的数据创建了输入字段,但如何仅针对具有值的输入字段

  15. 15

    如何对具有相同ID的新条目和最后插入条目进行求和,然后在新条目中插入结果

  16. 16

    如何对具有相同ID的新条目和最后插入条目进行求和并在新条目中插入结果

  17. 17

    当所有子模块处于同一级别时,git-svn分支

  18. 18

    如何在仅具有ID列的SQLite表中创建新行?

  19. 19

    角度2-从服务到组件的事件在同一级别

  20. 20

    如何查找具有此类的元素而不是具有此类的元素的子级

  21. 21

    具有SubFactory字段的DjangoModelFactory不会创建新条目,而是指向现有条目

  22. 22

    ElasticSearch 2.1.0-具有“和”量度的深度“子级”聚合返回空结果

  23. 23

    如何在多维数组中查找相同的值并创建仅具有唯一值的新数组?

  24. 24

    如何查找仅具有价值的MongoDB文档?

  25. 25

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

  26. 26

    从String到ObjectId的Spring数据MongoDb聚合查找

  27. 27

    创建具有多行的新列

  28. 28

    BeautifulSoup查找仅带有“点”而不具有“ find()”功能的子级

  29. 29

    在数组中查找具有特定属性的项目,然后计算数量,然后使用具有各自结果的对象创建新数组

热门标签

归档