Was mache ich falsch mit $ set und $ inc in update?

9

Ich probiere das an der mongodb-Konsole aus:

%Vor%

Es wird mit "ok" zurückgegeben, aber db.foobar.find() , gibt einen leeren Datensatz zurück. Ich versuche upsert ein Dokument, so dass es aussieht wie:

%Vor%

Wenn das Dokument nicht existiert, erstellen Sie eins mit einer Anzahl von 1. Andernfalls erhöhen Sie einfach die Anzahl. Warum funktioniert das nicht?

    
Christian Fazzini 27.05.2012, 10:14
quelle

3 Antworten

7

Es scheint mir, dass Ihr Code tatsächlich versucht, das $ inc-Feld des Dokuments festzulegen, anstatt den $ inc-Modifikator im foo.count-Feld zu verwenden. Das könnte sein, was du willst:

%Vor%

Hoffe, das hilft.

    
idrarig 27.05.2012, 15:51
quelle
1

In dem von Ihnen bereitgestellten Code-Snippet fehlt eine schließende geschweifte Klammer nach dem $ set-Objekt. Aber das ist ein Nebenproblem.

Ich glaube nicht, dass Sie dasselbe Unterdokument in einer Transaktion setzen und erhöhen können. Da count ein Mitglied unter foo ist, wird es auf einem Upsert noch nicht existieren. Der Fehler, den ich bekomme, wenn ich folgendes versuche:

%Vor%

ist "widersprüchliche Mods in Update". Vielleicht können Sie es so modellieren:

%Vor%

oder wenn Sie bevorzugen:

%Vor%     
Ray 27.05.2012 19:55
quelle
0

Also versuche ich gerade:

%Vor%

Dies aktualisiert das score und fügt es dem Objekt hinzu, wenn es nicht existiert, es scheint jedoch alle Objekte name s zu doc.name zu ändern (dh in diesem Fall "thename").

Ich bin nicht gekommen, wenn das Dokument noch nicht existiert

    
amlwwalker 14.06.2016 19:37
quelle

Tags und Links