MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongoose Уникални стойности във вложен масив от обекти

Уникален индекс на поле на масив налага, че една и съща стойност не може да се появи в масивите на повече от един документ в колекцията, но не пречи на една и съща стойност да се появява повече от веднъж в масива на един документ. Така че трябва да гарантирате уникалност, докато добавяте елементи към масива вместо това.

Използвайте $addToSet оператор за добавяне на стойност към масив само ако стойността вече не е налице.

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

Въпреки това, ако users масивът съдържа обекти с множество свойства и искате да гарантирате уникалност само върху едно от тях (uid в този случай), тогава трябва да предприемете друг подход:

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

Това, което прави, е да квалифицира $push актуализиране да се извършва само ако user.uid вече не съществува в uid поле на някой от елементите на users . Така че имитира $addToSet поведение, но само за uid .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDb Aggregation:Как мога да групирам масив-1 въз основа на друг масив-2, когато са дадени масив-1 и масив-2?

  2. MongoDB-as-a-Service в Канада

  3. Населяване на мангусти срещу гнездене на обекти

  4. MongoDB - Запитване между времеви диапазон от часове

  5. Визуално управление на MongoDB документи и колекции