如何在MongoDB中的更新操作中使用$ inc,$ min和$ setOnInsert?

时间:2019-06-18 11:41:22

标签: mongodb

我想在MongoDB中执行这样的操作:

通过查询{"name": "A.C. Abracus"}查找数据。如果数据不存在,它将使用$setOnInsert在数据库中创建数据。如果数据存在,它将使cmtCount增加1,同时将新的point值与数据库中现有的point进行比较,以选择其中的最小值并更新{最小值的{1}}字段。

MongoDB中的数据如下:

point >db.scores.find()

我用 { "_id" : ObjectId("5d08a9c83bb571704b774a60"), "name" : "A.C. Abracus", "assignment" : 5, "cmtcount" : 1, "point" : 33 } 尝试了诸如findOneAndUpdateupdate之类的操作,但没有达到我的期望。喜欢:

$set, $setOnInsert, $inc, $min

我希望结果是这样的: db.scores.update( {"name": "A.C. Abracus"}, { $min: {"point": 10}, $inc: {"cmtcount": 1}, $setOnInsert: {"name": "A.C. Abracus", "assignment": 5, "point": 33} }, {upsert: true} )

但这发生了错误 { "_id" : ObjectId("5d08a9c83bb571704b774a60"), "name" : "A.C. Abracus", "assignment" : 5, "cmtcount" : 2, "point" : 10 }

我认为可能是因为当数据不存在时,它同时运行"Updating the path 'point' would create a conflict at 'point'"$setOnInsert$min。因此发生冲突。

如何解决此问题?谢谢!

0 个答案:

没有答案