Mit Mungo / MongoDB $addToSet Funktionen auf array von Objekten
sagen, dass ich diese Eigenschaft array ('Artikel') auf einem Mungo schema:
articles: [
{
kind: 'bear',
hashtag: 'foo'
},
{
kind: 'llama',
hashtag: 'baz',
},
{
kind: 'sheep',
hashtag: 'bar',
}
]
wie kann ich
$addToSet https://docs.mongodb.org/manual/reference/operator/update/addToSet/
hinzufügen, die auf dieses array, indem der Wert der hashtag um zu sehen, ob es einzigartig ist?
Wenn ich zum Beispiel hinzufügen wollen, die folgenden Objekte, um die oben genannten array, ich will Mongo auf 'ablehnen' es als eine doppelte:
{
kind: 'tortoise',
hashtag: 'foo'
}
weil hashtag=foo hat bereits stattgefunden.
Das problem ist, dass ich nur wissen, wie $addToSet
mit einfache arrays von Integer-zahlen...
beispielsweise, wenn der Artikel sah so aus:
articles: [ 1 , 5 , 4, 2]
Ich würde $addToSet wie diese:
var data = {
"$addToSet": {
"articles": 9
}
}
model.update(data);
aber wie kann ich das gleiche erreichen mit einem array von Objekten, wo die einzigartige field ist ein string, in diesem Fall 'hashtag'? Die docs nicht machen dies deutlich, und es scheint, wie ich haben überall gesucht..
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die
$ne
Betreiber.Aktualisieren Sie das Dokument nur, wenn es keine Filialdokument in das "Artikel" - Reihe mit dem Wert der hashtag entspricht "foo".
Als @BlakesSeven erwähnt in dem Kommentar
$addToSet
irrelevant wird, sobald Sie das testen für die Anwesenheit von einem der Werte, so kann dies auch ein$push
für die code-Klarheit. Aber das Prinzip ist korrekt, da$addToSet
funktioniert auf das gesamte Objekt und nicht nur ein Teil davon.{ '$addToSet': { 'article': data } }
statt{ 'article': { '$addToSet': data } }
?