MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mongoose Unikalne wartości w zagnieżdżonej tablicy obiektów

Unikalny indeks w polu tablicy wymusza, aby ta sama wartość nie mogła pojawić się w tablicach więcej niż jednego dokumentu w kolekcji, ale nie zapobiega pojawianiu się tej samej wartości więcej niż raz w tablicy pojedynczego dokumentu. Musisz więc zapewnić unikalność podczas dodawania elementów do tablicy.

Użyj $addToSet operator, aby dodać wartość do tablicy tylko wtedy, gdy wartość nie jest jeszcze obecna.

Group.updateOne({name: 'admin'}, {$addToSet: {users: userOid}}, ...

Jeśli jednak users tablica zawiera obiekty o wielu właściwościach i chcesz zapewnić unikalność tylko jednego z nich (uid w takim przypadku), musisz zastosować inne podejście:

var user = { uid: userOid, ... };
Group.updateOne(
    {name: 'admin', 'users.uid': {$ne: user.uid}}, 
    {$push: {users: user}},
    function(err, numAffected) { ... });

To, co robi, to kwalifikacja $push aktualizacja występuje tylko wtedy, gdy user.uid nie istnieje już w uid pole dowolnego elementu users . Więc naśladuje $addToSet zachowanie, ale tylko dla uid .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB findAndModify()

  2. Eksportuj kolekcję MongoDB do pliku JSON

  3. $pierwszy w mongodb

  4. Jak mogę wygenerować ObjectId z mangustą?

  5. Jak zarządzać szablonami konfiguracji dla baz danych za pomocą ClusterControl