$ set 演算子はアップサートで使用されます それも。したがって、 $ setの両方で同じフィールドを参照するのは意味がありません。 および$setOnInsert 。
空のコレクションでこれを試してみてください:
db.items.remove();
db.items.update({},{$set:{a:1},$setOnInsert:{b:2}},{upsert:1})
db.items.find({});
$ set 演算子はアップサートで使用されます それも。したがって、 $ setの両方で同じフィールドを参照するのは意味がありません。 および$setOnInsert 。
空のコレクションでこれを試してみてください:
db.items.remove();
db.items.update({},{$set:{a:1},$setOnInsert:{b:2}},{upsert:1})
db.items.find({});