À l'aide de la Mangouste / MongoDB $addToSet fonctionnalité sur le tableau d'objets
dire que j'ai cette propriété array ('articles') sur une Mangouste schéma:
articles: [
{
kind: 'bear',
hashtag: 'foo'
},
{
kind: 'llama',
hashtag: 'baz',
},
{
kind: 'sheep',
hashtag: 'bar',
}
]
comment puis-je utiliser
$addToSet https://docs.mongodb.org/manual/reference/operator/update/addToSet/
à ajouter à ce tableau en vérifiant la valeur de hashtag pour voir si elle est unique?
Par exemple, si je veux ajouter l'objet suivant le tableau ci-dessus, je veux Mongo de 'rejeter' il comme un doublon:
{
kind: 'tortoise',
hashtag: 'foo'
}
car hashtag=foo a déjà été prises.
Le problème est que je ne sais comment utiliser $addToSet
avec de simples tableaux d'entiers...
par exemple, si les articles ressemblait à ceci:
articles: [ 1 , 5 , 4, 2]
Je voudrais utiliser $addToSet comme ceci:
var data = {
"$addToSet": {
"articles": 9
}
}
model.update(data);
mais comment puis-je faire la même chose avec un tableau d'objets où l'unique champ est une chaîne de caractères, dans ce cas précis, "hashtag"? La documentation n'est pas claire à ce sujet et il semble que j'ai cherché partout..
grâce
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser le
$ne
opérateur.Cela permettra de mettre à jour le document que si il n'y a pas de sous-document dans la partie "article" tableau avec la valeur de hashtag égale à "foo".
Comme @BlakesSeven mentionnées dans le commentaire
$addToSet
devient inutile une fois que vous êtes à la recherche de la présence de l'une de ces valeurs, ce qui peut aussi bien être un$push
pour le code de la clarté. Mais le principe est correcte, car$addToSet
travaille sur l'ensemble de l'objet et non en partie seulement.{ '$addToSet': { 'article': data } }
au lieu de{ 'article': { '$addToSet': data } }
?