我想添加一个额外的关键数字,其中包含自动递增数字的值。我如何才能做到这一点?下面是查询。有没有可能在不进行放松和分组的情况下实现这个结果?
[
{
"$match":{
"iContestId":"5e4118161a7b5765ee9b40ef"
}
},
{
"$project":{
"_id":"$_id",
"nPointsEarned":"$nPointsEarned",
"iContestId":"$iContestId",
"iUserId":"$iUserId",
"ranking":"$ranking",
"sFullName":"$sFullName",
"sProfilePicture":"$sImage",
"nAutoIncrement": {
"$count": {
"$sum": 1
}
}
}
},
{
"$sort":{
"ranking":1
}
},
{
"$skip":0
},
{
"$limit":23
}
]
3条答案
按热度按时间j2cgzkjk1#
这不可能。没有任何运算符来生成序列号
n3schb8v2#
实际上,您现在可以在聚合管道中使用$setWindowFields操作(Mongo 5中的新操作)来实现这一点。
例如:
将在
yourIndexFieldName
字段中存储来自查询的每个文档(自动递增)索引。这是因为这将返回与
queryFilter
指定的过滤器相匹配的文档的计数,相对于文档在文档窗口中的位置。因此,如果操作正在查看窗口中的文档4,则文档窗口中到该点的计数将为4。
注意:由于
$count
的性质,索引将从1而不是0开始js5cn81o3#
您可以使用
$addFields
和$add
的组合(v5及更高版本中支持)来实现这一点。如果
nAutoIncrement
是集合中的现有字段,则它将获得1。如果不是,我认为这将添加该字段到文档中(不要引用我的话)。查看Updates with Aggregation Pipeline上的mongodb文档。