【问题标题】:MongoDB Aggregation get key value based on another key value within an arrayMongoDB聚合根据数组中的另一个键值获取键值
【发布时间】:2021-09-30 02:35:14
【问题描述】:

在聚合框架的上下文中并考虑存储在 MongoDB 集合中的以下简化文档结构:

[
    { 'reference': 'ReferenceStr',
      'subgroup': [ { '#': 1, 'param': 123},
                    { '#': 2, 'param': 456},
                    { '#': 3, 'param': 789}
                  ],
      'group': [ {'#': 1, 'start': 1, 'end': 2},
                 {'#': 2, 'start': 3, 'end': 3} ],
    }
]

知道 $group.# 上的一个条件(假设是 $group.#=1),我想使用 $group.end 的关联值(这里是 2)来获取 $subgroup.param 对应于 $ 的值subgroup.#=$group.end

我想返回: {'reference': 'ReferenceStr', 'var': 456}

到目前为止,我只有:

db_collection.aggregate([
                          { '$project' : {
                                           'reference' : '$reference',
                                           'var' : {
                                                     ...
                                                   }
                                         }
                          }
])

$indexOfArray 和 $arrayElementAt 是我唯一的希望吗? 我迷失在结构中。

任何帮助将不胜感激。

【问题讨论】:

    标签: python aggregation-framework pymongo


    【解决方案1】:

    您可以通过在您指定的组中使用end 来执行$lookup 进行自我查找。然后在子管道中,可以通过$match$group.end过滤出预期的子组。

    这里是Mongo playground 供您参考。

    【讨论】:

      猜你喜欢
      • 2017-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-17
      • 1970-01-01
      • 2016-07-03
      相关资源
      最近更新 更多