mongodb - 为 MongoDB 聚合中的字段分配增量编号
问题描述
我有一个 MongoDB 聚合,每个文档都有一个字段(groupNumber),如下所示:
我需要每个 groupNumber 对每个文档都有不同的编号(可以是增量 1、2、3 ..)
我发现的大多数解决方案都使用像这样的“查找” ,但我认为这不能用于聚合。
提前致谢。
解决方案
您可以通过查找来做到这一点,但我认为它不会很好地扩展。我认为这应该以某种方式持久化,也许$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}}
])