gpt4 book ai didi

mongodb findOneAndUpdate 仅当满足特定条件时

转载 作者:行者123 更新时间:2023-12-05 07:36:00 25 4
gpt4 key购买 nike

以下是我的 mongo 数据库条目。

my-mongo-set:PRIMARY> db.stat_collection.find({name : /s/})
{ "_id" : ObjectId("5aabf231a167b3808302b138"), "name" : "shankarmr", "email" : "abc@xyz", "rating" : 9901 }
{ "_id" : ObjectId("5aabf23da167b3808302b139"), "name" : "shankar", "email" : "abc1@xyz1", "rating" : 10011 }
{ "_id" : ObjectId("5aabf2b5a167b3808302b13a"), "name" : "shankar1", "email" : "abc2@xyz2", "rating" : 10 }
{ "_id" : ObjectId("5aabf2c2a167b3808302b13b"), "name" : "shankar2", "email" : "abc3@xyz3", "rating" : 100 }

现在我想根据名称查找条目,但仅当特定条件成立时才更新字段。

我尝试了以下语句,但它在第二次引用 $rating 时出错。

db.stat_collection.findOneAndUpdate({name: "shankar"}, {$set : {rating : {$cond : [ {$lt : [ "$rating", 100]}, 100, $rating]}}, $setOnInsert: fullObject}, {upsert : true} )

所以在我的例子中,它不应该更新第二个文档的评分,因为评分不低于 100。但是对于第三个文档,评分应该更新为 100。

我如何让它工作?

最佳答案

$max是您正在寻找的运营商,请尝试:

db.stat_collection.findOneAndUpdate( { name: "shankar1"}, { $max: { rating: 100 } }, { returnNewDocument: true } )

您将获得旧值(如果大于 100)或修改文档并设置 100

根据文档:

The $max operator updates the value of the field to a specified value if the specified value is greater than the current value of the field. The $max operator can compare values of different types, using the BSON comparison order.

关于mongodb findOneAndUpdate 仅当满足特定条件时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49326116/

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