Zapewnienie niepowtarzalność poszczególnych wartości w polu tablicy
W uzupełnieniu do powyższego przykładu, istnieje funkcja w MongoDB, aby upewnić się, że podczas dodawania nowego obiektu/wartość do tablicy pole, że wykona aktualizację, tylko jeśli wartość/obiekt jeszcze nie istnieje.
Więc jeśli masz dokument, który wygląda tak:
{ _id: 123, kittens: [456] }
To byłby dozwolony:
db.cats.update({_id:123}, {$push: {kittens:456}})
powodując
{ _id: 123, kittens: [456, 456] }
jednak używając $ addToSet funkcja (w przeciwieństwie do $ pu sh) sprawdzi, czy wartość już istnieje przed dodaniem. Więc, zaczynając od:
{ _id: 123, kittens: [456] }
następnie wykonanie:
db.cats.update({_id:123}, {$addToSet: {kittens:456}})
nie miałoby żadnego wpływu.
Krótko mówiąc, unikalne ograniczenia nie potwierdzają jednoznaczności w elementach wartości pola tablicy, tylko że dwa dokumenty nie mogą mieć identycznych wartości w indeksowanych polach.
Zobacz http://stackoverflow.com/questions/4435637/mongodb-unique-key-in-embedded-document/4437836 – pingw33n