MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB - Por que o índice _id não lança um erro em entradas duplicadas?


Não há razão para mostrar o erro de índice duplicado no primeiro caso, pois está apenas tentando atualizar o _id e name campos do mesmo registro com o mesmo valor.

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

você receberá um erro, pois a consulta está tentando atualizar o registro com diferentes _id com alguns _id existentes valor.

No segundo caso, você criou um registro primeiro com name campo e então você está tentando atualizar o mesmo nome em outro registro, que dará erro como name é índice único.

Editar:-

Se você está tentando
 db.foo.insert({ _id: 'doe123', name: 'John Doe'});

lhe dará o erro, pois neste caso você está tentando inserir um registro que já está presente, ou seja, _id é único e você está tentando criar mais um registro com o mesmo _id valor.