Mongo DB 文档示例 文件1 { _id 123 客户:客户A 州: 德克萨斯州 城市: 休斯顿 校验和:1111 是否捆绑: }
文档2 { _id 1234 客户:客户B 州: 德克萨斯州 城市: 休斯顿 校验和:1111 是否捆绑: }
文档3 { _id 12345 客户:客户c 州: 纽约州 城市: 布法罗 校验和:2222 是否捆绑:
}
校验和字段使用“州”和“城市”字段填充在应用程序代码中。
如果校验和匹配超过 1 个文档,则将每个文档的 IsBundled 字段填充为 true。在我们的例子中,第一个和第二个文档需要使用 isBundled: true 进行更新。我不是在应用程序代码中添加此逻辑,而是使用聚合管道寻找更好的解决方案
也许是这样的:
db.collection.aggregate([
{
"$group": {
"_id": "$checksum",
"toUpdate": {
"$addToSet": "$_id"
},
cnt: {
$sum: 1
}
}
},
{
$match: {
cnt: {
$gt: 1
}
}
},
{
$unwind: "$toUpdate"
}
]).toArray().forEach(function(d){ db.collection.update({_id:d.toUpdate},{$set:{ IsBundled:"true" }}) })
解释: