2012-04-19 14 views

Antwort

4

Nein, das geht nicht. Sie können keine Ausdrücke in mongodb-Aktualisierungen verwenden. Die einzige Möglichkeit besteht darin, dieses Dokument zum Client zu holen, dort einen neuen Feldwert zu erstellen und eine vorbereitete Aktualisierungsanweisung auszugeben.

+3

(* das hat mir denken: warum es so ist es nicht zu schwierig sein, einfach Referenzen Feld zu implementieren Nein, nein, ich shouldn‘. Denke darüber nach, ich habe Arbeit zu erledigen. *) –

2

Wie es von Sergio erwähnt wurde, können Sie dies nicht einmal ein Jahr nach der Frage mit der Version 2.4.8 tun. Aber wenn Sie dies tun, dann können Sie diese verwenden

db.yourCollection.find({}).forEach(function(doc) { 
    doc.F1 = doc.F1 + ", " + doc.F2; 
    delete doc.F2; 
    db.yourCollection.save(doc); 
}); 
+0

Eigentlich traf ich mit MongoDB andere Wände, ernster als das. Am Ende habe ich eine schmerzhafte Entscheidung getroffen, mein Backend von MongoDB nach PostgreSQL zu migrieren. – mark

+0

Können Sie Ihre Probleme beschreiben? Es könnte für andere nützlich sein, aus Ihren Fehlern zu lernen :-) –

+1

** Nicht-zählende B-Bäume. ** Ich muss Berichte mit Zählungen von Aufzeichnungen produzieren, die verschiedenen Kriterien entsprechen. Es ist ein Showstopper. ** Eindeutige optionale Felder ** Ich habe einige Felder, die eindeutig sind, wenn sie nicht null sind, aber dort können viele Datensätze mit Nullwerten vorhanden sein. Die Art und Weise, wie mongo solche Felder indiziert, macht es unmöglich, nach Datensätzen mit dem Nullwert zu suchen - Sie müssen Ersatzwerte verwenden, die nicht Null sind, was wirklich mühsam ist. ** Wild auf dem Speicher ** MongoDB ist wirklich serverorientiert, es toleriert keine andere laufende Anwendung, weil es aufgrund seines Designs den gesamten RAM benötigt. – mark

Verwandte Themen