_id
を更新しようとしているだけなので、最初のケースで重複インデックスエラーを表示する理由はありません。 およびname
同じレコードの同じ値のフィールド。
やってみるなら
db.foo.update({ _id: '1098'}, { _id: 'doe123', name: 'John Doe'}, { upsert: true});
クエリが異なる_id
でレコードを更新しようとしているため、エラーが発生します 既存の_id
を使用 価値。
2番目のケースでは、最初にname
でレコードを作成しました フィールドで、別のレコードの同じ名前を更新しようとすると、name
としてエラーが発生します 一意のインデックスです。
編集:-
お試しの場合
db.foo.insert({ _id: 'doe123', name: 'John Doe'});
この場合、すでに存在するレコード、つまり_id
を挿入しようとしているため、エラーが発生します。 は一意であり、同じ_id
でもう1つのレコードを作成しようとしています 価値。