如何用一个新文档来填充缺失的代码号,sequence Mongodb



我有一个这样的用户集合。。。

{
"_id": "614443e922b33330542a2645",
"userName": "John",
"code": 1,
},
{
"_id": "614443e922b33330542a2646",
"userName": "Adam",
"code": 2,
},
{
"_id": "614443e922b33330542a2647",
"userName": "Lily",
"code": 3,
},
{
"_id": "614443e922b33330542a2649",
"userName": "Brad",
"code": 5,
}

在此集合中,代码为4的文档已被删除。。。现在我想创建一个新的文档并填充序列。是否有任何函数或运算符可以检测丢失的代码并使用代码4创建它?

提前谢谢。

您可以使用聚合计算新代码,然后插入新文档:

db.collection.aggregate([
{
$group: {
_id: "Test",
arr: {
$push: "$code"
},
ma: {
$max: "$code"
},
mi: {
$min: "$code"
}
}
},
{
$project: {
_id: 0,
code: {
$min: {
"$setDifference": [
{
$range: [
"$mi",
"$ma",
1
]
},
"$arr"
]
}
}
}
}
])
  1. 用$push将数组中的所有代码分组,并查找max&最小
  2. 根据最大值和最小值计算数组与自动生成的数组之间的差值,得到可用于插入新文档的最小值。请注意,如果你的应用程序是多线程的,如果你同时执行这段代码,它将提供相同的结果,所以你可以在这里考虑一些并发机制,或者从可用的列表中选择随机代码

操场

最新更新