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

MongoDB - Perché l'indice _id non genera un errore sulle voci duplicate?

Non vi è alcun motivo per mostrare un errore di indice duplicato nel primo caso poiché sta solo cercando di aggiornare il _id e name campi dello stesso record con lo stesso valore.

Se ci proverai

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

riceverai un errore, poiché la query sta tentando di aggiornare il record con _id diverso con alcuni _id esistenti valore.

Nel secondo caso, hai prima creato un record con name campo e quindi stai provando ad aggiornare lo stesso nome in un altro record, che darà l'errore come name è un indice univoco.

Modifica :-

Se stai provando

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

ti darà l'errore, in quanto in questo caso stai cercando di inserire un record che è già presente ovvero _id è unico e stai cercando di creare un altro record con lo stesso _id valore.