MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Differenza MongoDB tra il codice di errore 11000 e 11001

Il codice 11001 non esiste nel ramo 2.5/2.6 su GitHub, quindi se stai provando una versione 2.5 non puoi crearla. Ho dato un'occhiata al codice, ma non riesco a trovare alcun percorso che mostri 11001 codice direttamente.

Le poche righe seguenti mostreranno il codice 11001 :

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

Il 11000 previsto :

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

E ora per raggiungere il 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 }

Ancora il 11000 originale , ma:

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

Che il messaggio di errore testuale originale mostri E11000 è un bug:https://jira.mongodb.org/browse/SERVER-5978