Sicherstellung der Eindeutigkeit der einzelnen Werte in einem Array-Feld
Zusätzlich zum obigen Beispiel gibt es in MongoDB eine Funktion, die sicherstellt, dass beim Hinzufügen eines neuen Objekts/Werts zu einem Array-Feld die Aktualisierung nur dann durchgeführt wird, wenn der Wert/das Objekt noch nicht existiert.
Wenn Sie also ein Dokument haben, das wie folgt aussieht:
{ _id: 123, kittens: [456] }
Dies wäre zulässig:
db.cats.update({_id:123}, {$push: {kittens:456}})
was zu
{ _id: 123, kittens: [456, 456] }
jedoch unter Verwendung der $addToSet Funktion (im Gegensatz zu $push ) würde prüfen, ob der Wert bereits existiert, bevor er hinzugefügt wird. Also, beginnend mit:
{ _id: 123, kittens: [456] }
und dann ausgeführt werden:
db.cats.update({_id:123}, {$addToSet: {kittens:456}})
Das würde keine Auswirkungen haben.
Kurz gesagt, eindeutige Beschränkungen überprüfen nicht die Eindeutigkeit innerhalb der Wertelemente eines Array-Feldes, sondern nur, dass zwei Dokumente keine identischen Werte in den indizierten Feldern haben können.