MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB - Pourquoi l'index _id ne génère-t-il pas d'erreur sur les entrées en double ?

Il n'y a aucune raison d'afficher une erreur d'index en double dans le premier cas car il essaie simplement de mettre à jour le _id et name champs du même enregistrement avec la même valeur.

Si vous essayez

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

vous obtiendrez une erreur, car la requête essaie de mettre à jour l'enregistrement avec un _id différent avec un _id existant valeur.

Dans le second cas, vous avez d'abord créé un enregistrement avec name champ et ensuite vous essayez de mettre à jour le même nom dans un autre enregistrement, ce qui donnera une erreur en tant que name est un index unique.

Modifier :-

Si vous essayez

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

vous donnera l'erreur, car dans ce cas, vous essayez d'insérer un enregistrement qui est déjà présent, c'est-à-dire _id est unique et vous essayez de créer un autre enregistrement avec le même _id valeur.