首页 > 解决方案 > 为 MongoDB 聚合中的字段分配增量编号

问题描述

我有一个 MongoDB 聚合,每个文档都有一个字段(groupNumber),如下所示:

在此处输入图像描述

我需要每个 groupNumber 对每个文档都有不同的编号(可以是增量 1、2、3 ..)

我发现的大多数解决方案都使用像这样的“查找” ,但我认为这不能用于聚合。

提前致谢。

标签: mongodbaggregation-framework

解决方案


您可以通过查找来做到这一点,但我认为它不会很好地扩展。我认为这应该以某种方式持久化,也许$out是另一个集合,这样数字是稳定的,删除或插入文档不会改变任何其他组的数字。

db.target.aggregate([
    {"$lookup":{
        "from":"target",
        "as":"looked",
        "let":{"srcId":"$_id"},
        "pipeline":[
          {"$match":{"$expr":{"$lte":["$_id","$$srcId"]}}},
          {"$group":{"_id":"null", "cnt":{"$sum":1}}}
        ]
    }},
    {"$addFields":{"groupNumber":{"$arrayElemAt":["$looked.cnt",0]}}},
    {"$project":{"looked":0}}
])

推荐阅读