MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Différence MongoDB entre le code d'erreur 11000 et 11001

Le code 11001 n'existe pas dans la branche 2.5/2.6 sur GitHub, donc si vous essayez une version 2.5, vous ne pouvez pas la créer. J'ai jeté un coup d'œil au code, mais je ne trouve aucun chemin indiquant le 11001 coder soit directement.

Les quelques lignes suivantes afficheront le code 11001 :

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

Le 11000 attendu :

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

Et maintenant pour atteindre le 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 }

Toujours le 11000 d'origine , mais :

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

Que le message d'erreur textuel d'origine affiche E11000 est un bogue :https://jira.mongodb.org/browse/SERVER-5978