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

MongoDB:¿por qué el índice _id no arroja un error en las entradas duplicadas?

No hay razón para mostrar un error de índice duplicado en el primer caso, ya que solo está tratando de actualizar el _id y name campos del mismo registro con el mismo valor.

Si lo intentas

  db.foo.update({ _id: '1098'}, { _id: 'doe123', name: 'John Doe'}, { upsert: true});

obtendrá un error, ya que la consulta está intentando actualizar el registro con diferentes _id con algunos _id existentes valor.

En el segundo caso, creó un registro primero con name y luego está intentando actualizar el mismo nombre en otro registro, lo que dará un error como name es un índice único.

Editar:-

Si lo estás intentando

 db.foo.insert({ _id: 'doe123', name: 'John Doe'});

le dará el error, ya que en este caso está intentando insertar un registro que ya está presente, es decir, _id es único y está intentando crear un registro más con el mismo _id valor.