2017-04-12 8 views
0

Ich habe eine Liste von Dokumenten, die ich in MongoDB aktualisieren möchte. Ich sende es als JSON-Array an die API.Aktualisierung einer Liste von MongoDB-Dokumenten

Wie kann ich alle Dokumente aktualisieren, ohne Document.update() in eine Schleife zu schreiben?

Ich schaute auf die $ in Modifier, aber ich bin mir nicht sicher, wie Sie die tatsächlichen Daten an die Methode übergeben.

var docs = req.body 
    Card.update(
     {_id: {$in: docs}}, 
     {whatgoeshere?} 
    ) 

Antwort

2

Sie Update Abfrage mit "multi" verwenden können: true Option:

db.collection.update(
    <query>, 
    <update>, 
    { 
    upsert: <boolean>, 
    multi: <boolean>, 
    writeConcern: <document>, 
    collation: <document> 
    } 
) 

Oder können Sie updateMany verwenden, hinzugefügt in MongoDB 3.2 Version:

db.collection.updateMany(
    <filter>, 
    <update>, 
    { 
    upsert: <boolean>, 
    writeConcern: <document>, 
    collation: <document> 
    } 
) 
+0

I Habe ein Array von Dokumenten (_id's und alles) Wie setze ich updateMany darauf? –

+0

Sie müssen das Array von Dokumenten nicht übergeben, um die Abfrage zu aktualisieren. Sie sollten nur Kriterien übergeben, auf denen Sie aktualisieren möchten. Wenn Sie befürchten, dass die Aktualisierungsabfrage das vorhandene Dokument vollständig ersetzt, können Sie den Operator ** $ set ** verwenden. – adi

+0

Ich habe etwas erreicht mit einer for-Schleife und Erstellen einer Versprechen Kette zu tun, was ich will, wie ich nicht die $ set cmd verwenden kann, um einzelne Parameter einzustellen. Ein Dokumentenindex unterscheidet sich beispielsweise voneinander. –

Verwandte Themen