Ich war überrascht, dass der folgende Beispielcode nur ein einzelnes Dokument aktualisiert:
> db.test.save({"_id":1, "foo":"bar"});
> db.test.save({"_id":2, "foo":"bar"});
> db.test.update({"foo":"bar"}, {"$set":{"test":"success!"}});
> db.test.find({"test":"success!"}).count();
1
Ich weiß, dass ich mich durchlaufen und weiter aktualisieren kann, bis sie alle geändert sind, aber das scheint furchtbar ineffizient zu sein. Gibt es einen besseren Weg?
Ab Version 3.3 können Sie updateMany verwenden
In Version 2.2 hat die Aktualisierungsfunktion die folgende Form:
https://docs.mongodb.com/manual/reference/method/db.collection.update/
quelle
Fügen Sie für Mongo Version> 2.2 ein Feld Multi hinzu und setzen Sie es auf true
quelle
Ich habe einen Weg gefunden, dies mit einer besseren Oberfläche zu tun.
db.collection.find({ ... }).update({ ... })
- Multi Updatedb.collection.find({ ... }).replace({ ... })
- Einzelersatzdb.collection.find({ ... }).upsert({ ... })
- Single Upsertdb.collection.find({ ... }).remove()
- mehrfach entfernenSie können auch Limits anwenden, überspringen, sortieren und entfernen, indem Sie sie vorher verketten.
Wenn Sie interessiert sind, schauen Sie sich Mongo-Hacker an
quelle
db.userActivity.find({ 'appId' : 1234, 'status' : 1}).update({ $set: { 'status': 1 } }); 2017-06-05T17:47:10.038+0530 E QUERY [thread1] TypeError: db.userActivity.find(...).update is not a function :
Geben Sie im MongoDB-Client Folgendes ein:
Neu in Version 3.2
Params ::
Schlüsselwortargument
multi
nicht übernommenquelle
MongoDB findet nur ein übereinstimmendes Dokument, das den Abfragekriterien entspricht, wenn Sie einen Aktualisierungsbefehl ausgeben. Das Dokument, das zuerst übereinstimmt, wird aktualisiert, auch wenn mehr Dokumente vorhanden sind, die den Kriterien entsprechen.
Um dies zu überwinden, können wir in Ihrer Update-Anweisung die Option "MULTI" angeben, dh alle Documnets aktualisieren, die den Abfragekriterien entsprechen. Scannen Sie nach allen Dokumenten in der Sammlung, um diejenigen zu finden, die den Kriterien entsprechen, und aktualisieren Sie:
quelle
Der folgende Befehl kann mehrere Datensätze einer Sammlung aktualisieren
quelle
Ich hatte das gleiche Problem und fand die Lösung, und es funktioniert wie ein Zauber
Setzen Sie einfach das Flag multi wie folgt auf true:
Ich hoffe das hilft :)
quelle
So aktualisieren Sie die gesamte Sammlung:
quelle
Sie können verwenden. "
quelle
Alle aktuellen Versionen von mongodb updateMany () funktioniert gut
quelle
Vielen Dank für das Teilen, ich habe mit 2.6.7 verwendet und folgende Abfrage hat gerade funktioniert,
für alle Dokumente:
für einzelne Dokumente:
quelle