NodeJS + Mongo: Insert wenn nicht vorhanden, sonst - update
Habe ich ein Objekt in meiner mongodb collection. Ihr schema ist:
{
"instruments": ["A", "B", "C"],
"_id": {
"$oid": "508510cd6461cc5f61000001"
}
}
Meine Sammlung kann solchen Objekt, kann aber nicht. Ich muss prüfen ob das Objekt mit den wichtigsten "Instrumente" vorhanden ist (bitte beachten Sie, ich weiß nicht, was Wert "instrument" ist in dieser Zeit, es kann einen beliebigen Wert enthalten, oder ein array), und-wenn vorhanden - update durchführen, sonst legen Sie einen neuen Wert ein. Wie kann ich dies tun?
collection.find( { "instruments" : { $exists : true } }, function(err, object){
if (object) {
//update
} else {
//insert
}
});
funktioniert nicht ((
InformationsquelleAutor der Frage f1nn | 2012-10-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, legen Sie ein Dokument ein, wenn es nicht gefunden wird, können Sie die
upsert
option in derupdate()
Methode:Docs für die upsert Verhalten.
Beispiel mit der
$exists
Betreiber.Lassen Sie uns sagen, Sie haben 6-Dokumente in Ihrer Sammlung:
und Sie möchten, um Dokumente zu suchen, die einen bestimmten Bereich
"a"
), die Sie verwenden könnenfind()
Methode mit der $existiert operator (Knoten docs). Hinweis: dadurch werden auch Dokumente gefunden, in welchem Feld ist ein leeres array.InformationsquelleAutor der Antwort Gianfranco P.