sql >> Databáze >  >> NoSQL >> MongoDB

Mongoose Jedinečné hodnoty ve vnořeném poli objektů

Jedinečný index v poli pole vyžaduje, aby se stejná hodnota nemohla objevit v polích více než jednoho dokumentu v kolekci, ale nezabrání tomu, aby se stejná hodnota objevila více než jednou v poli jednoho dokumentu. Při přidávání prvků do pole tedy musíte zajistit jedinečnost.

Použijte $addToSet operátor k přidání hodnoty do pole pouze v případě, že hodnota již není přítomna.

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

Pokud však users pole obsahuje objekty s více vlastnostmi a vy chcete zajistit jedinečnost pouze jedné z nich (uid v tomto případě), pak musíte použít jiný přístup:

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

Co to dělá, je kvalifikovat $push aktualizace proběhne pouze v případě, že user.uid ještě neexistuje v uid pole kteréhokoli z prvků users . Takže to napodobuje $addToSet chování, ale pouze pro uid .



  1. Jak vložit pole objektů do pole v mongoose jedním voláním?

  2. Přehled replikace Apache HBase

  3. Přidat expiraci do mezipaměti Redis

  4. Dotaz na pole mongoid hash