sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB diferencia entre el código de error 11000 y 11001

El código 11001 no existe en la rama 2.5/2.6 en GitHub, por lo que si está probando una versión 2.5, no puede crearla. Eché un vistazo al código, pero no puedo encontrar ninguna ruta que muestre el 11001 código ya sea directamente.

Las siguientes líneas mostrarán el código 11001 :

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

El esperado 11000 :

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

Y ahora para llegar al 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 }

Sigue siendo el 11000 original , pero:

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 el mensaje de error textual original muestra E11000 es un error:https://jira.mongodb.org/browse/SERVER-5978