In this post, the accepted answer explains that you cannot have the same fields under $set
and $setOnInsert
in an upsert operation.
Can someone explain why this is? It seems like the $setOnInsert
shouldn't conflict with $set
, since the former is used when a document is inserted, and the latter is used when the document is updated.
$set operator is used on upsert too. So it's nonsense to refer same fields both on $set and $setOnInsert.
Just try this on an empty collection:
db.items.remove();
db.items.update({},{$set:{a:1},$setOnInsert:{b:2}},{upsert:1})
db.items.find({});
来源:https://stackoverflow.com/questions/27552352/mongodb-duplicate-fields-in-set-and-setoninsert