29

この非常に不完全なリストhttp://www.mongodb.org/about/contributors/error-codes/によると、それらは両方とも重複キーに関連しています。しかし、11001 エラーを取得できませんでした。次のすべてで 11000 エラーがスローされました。

  • _idすでに存在するドキュメントを挿入する
  • フィールドが複合一意インデックスを持つ重複フィールドを持つドキュメントを挿入する
  • 上記の複合一意インデックスを使用してドキュメントを更新する

したがって、これはリンクされたページに完全に反します。これは、11000 が対象で_idあり、11001 が更新 (挿入ではなく) で発生することを示しています。

だから私の質問は: 11001 はいつ発生しますか?

4

2 に答える 2

34

コード11001は GitHub の 2.5/2.6 ブランチには存在しないため、2.5 バージョンを試している場合は作成できません。11001コードを確認しましたが、コードを直接表示するパスが見つかりません。

次の数行にコードが表示されます11001

db.so.drop();
db.so.insert( { foo: 5 } );
db.so.ensureIndex( { foo: 1 }, { unique: true } );
db.so.insert( { foo: 6 } );

予想される11000

db.so.insert( { foo: 5 } );
E11000 duplicate key error index: test.so.$foo_1  dup key: { : 5.0 }

そして今、到達するために11001

db.so.insert( { foo: 6 } );
db.so.update( { foo: 6 }, { $set: { foo: 5 } } );
E11000 duplicate key error index: test.so.$foo_1  dup key: { : 5.0 }

まだオリジナル11000ですが、

db.getPrevError();
{
    "err" : "E11000 duplicate key error index: test.so.$foo_1  dup key: { : 5.0 }",
    "code" : 11001,
    "n" : 0,
    "nPrev" : 1,
    "ok" : 1
}

元のテキスト エラー メッセージが示すE11000のはバグです: https://jira.mongodb.org/browse/SERVER-5978

于 2013-08-05T15:00:58.847 に答える