Mongodb更新.不允许在_id上使用setOnInsert

Kur*_*ius 5 mongodb

我理解您无法在现有的mongodb文档上更新_id.

但是有没有理由我们不能在'setOnInsert'部分的upsert中使用它?因为它是'插入'所以它不是更新.

我的预期用法是这样的:

db.myCol.update({_id:12345},{$setOnInsert:{_id:12345},$set:{myValue:'hi'}});
Run Code Online (Sandbox Code Playgroud)

这是一个错误还是我错过了什么?

Kur*_*ius 10

MongoDB使用"查询"部分作为集合的一部分进行upsert查询,这意味着您不必在要指定自己的_id的set部分中指定_id.

注意:我上面的查询也有一个小错误,它是缺少的upsert标志.

这是正确的查询:

db.myCol.update({_id:12345},{$set:{myValue:'hi'}},{upsert:true});
Run Code Online (Sandbox Code Playgroud)

如果记录不存在,此查询将插入如下所示的记录:

{_id:12345,myValue:'hi'}
Run Code Online (Sandbox Code Playgroud)