如果存在,如何更新文档,如果在 mongodb 中不存在,如何将其插入?
Posted
技术标签:
【中文标题】如果存在,如何更新文档,如果在 mongodb 中不存在,如何将其插入?【英文标题】:How to update document if it exist and insert it if it doesn't exist in mongodb? 【发布时间】:2021-12-20 01:06:33 【问题描述】:这个问题与其他类似问题不同,因为 upsert: true 选项没有提供所需的输出。 我想更新/插入以下文档:
_id:
playerId: '1407081',
tournamentId: '197831',
matchId: '1602732'
,
playerName: 'abcd',
points: -5
执行下面给出的代码后,
await Points.findOneAndUpdate(
"_id": playerStatsObjForDB._id
,
playerStatsObjForDB
,
upsert: true
);
//where playerStasObjForDB is same as object mentioned in top.
如果文档不存在,则插入以下文档:
"_id":
"playerId":"1407081",
"tournamentId":"197831",
"matchId":"1602732"
,
"__v":0,
我正在使用猫鼬,但非常感谢任何帮助。
【问题讨论】:
【参考方案1】:MongoDB upsert 的工作方式如下:
db.products.updateMany(
_id: 6 ,
$set: price: 999 ,
upsert: true
)
所以基本上第一个参数是查询本身,和你做的一样,但第二个应该是你想要修改的更新,你应该使用像 $set 这样的 MongoDB 操作符。 相反,您似乎将整个对象嵌入其中而没有修改。
【讨论】:
使用 $set 运算符解决了我的问题。以上是关于如果存在,如何更新文档,如果在 mongodb 中不存在,如何将其插入?的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB更新数组元素(带有键的文档)如果存在,否则推送
MongoDB-更新多个文档解决方案-更新文档计数器或在不存在的情况下插入