gpt4 book ai didi

mongodb - 用计数器更新

转载 作者:行者123 更新时间:2023-12-04 03:35:38 25 4
gpt4 key购买 nike

我有一个包含以下文件的fruit 集合:

{
tag: "Apple",
count: 3
},
{
tag: "Banana",
count: 2
}

我得到了带有标签和值的新文档。值1表示增加计数器,值-1表示减少计数器

{
tag: "Coconut",
value: 1
},
{
tag: "Banana",
count: -1
}

upsert 的结果应该是:

{
tag: "Apple",
count: 3
},
{
tag: "Banana",
count: 1 // previously 2, decrease counter by 1
},
{
tag: "Coconut",
count: 1 // Did not exist, so add and set counter to 1
}

此外,如果 count 减少到 0(或更少),则从集合中删除该文档。所以如果我接下来得到这个:

{
tag: "Apple",
count: 1
},
{
tag: "Banana",
count: -1
}

下一个 upsert 的结果应该是

{
tag: "Apple", // previously 3, increase by 1
count: 4
},
// {
// tag: "Banana",
// count: 0 // Remove from collection
// },
{
tag: "Coconut",
count: 1
}

如何在 mongodb 中以简洁的方式实现这一点?

最佳答案

您可以使用 bulkWrite

$inc

db.myCollection.bulkWrite([
{
updateOne: {
filter: { tag: "Banana" } ,
update: { $inc: { "count": -1 } },
upsert : true
}
},
{
updateOne: {
filter: { tag: "Coconut" } ,
update: { $inc: { "count": 1 } },
upsert: true
}
},
{
deleteMany : { // delete records records if count is 0 or less
filter : { count: { $lte: 0 } }
}
}
])

关于mongodb - 用计数器更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66987388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com