Verwendung von forEach() zur Aktualisierung eines Array-Feldes in der MongoDB-Shell
Heute lernen wir, wie man forEach() verwendet, um ein Array-Feld zu aktualisieren, während man die MongoDB-Shell verwendet.
Verwenden von forEach() zum Aktualisieren eines Array-Feldes in der MongoDB-Shell
Um forEach() zu verwenden, bereiten wir eine Beispielsammlung namens collection vor, die zwei Dokumente enthält. Sie können auch die folgenden Abfragen verwenden, um fortzufahren.
Beispielcode:
> use updateArrayField
> db.createCollection('collection');
> db.collection.insertMany([
{
"name": "Mehvish",
"gender": "Female",
"fields" : [
{ "_id" : 1, "items" : [ 1,3,4,5,6,7 ] }
]
},
{
"name": "Thomas Christopher",
"gender": "Male",
"fields" : [
{ "_id" : 1, "items" : [ 1,3,4,5,6,7 ] }
]
}
]);
Als nächstes verwenden wir diese Dokumente, um das Array-Feld mit dem Namen fields.items von zu aktualisieren
"items" : [ 1,3,4,5,6,7]
zu
"items" : [
{item: 1, key: 0},
{item: 3, key: 0},
{item: 4, key: 0},
{item: 5, key: 0},
{item: 6, key: 0},
{item: 7, key: 0}
]
Dafür können wir ein verschachteltes forEach() verwenden, wie unten angegeben.
Beispielcode:
> var table = db.collection.find();
> table.forEach(function( oneRow ) {
var newFields = [];
oneRow.fields.forEach( function( oneField ){
var newItems = [];
oneField.items.forEach( function( item ){
var aNewItem = { item: parseInt(item), key: 0 };
newItems.push( aNewItem );
} );
newFields.push({ _id: oneField._id, items: newItems });
} )
db.collection.update(
{ _id: oneRow._id },
{ "$set": { "fields": newFields } }
);
});
Führen Sie die folgende Abfrage in der Mongo-Shell aus, um die aktualisierten Dokumente anzuzeigen.
Beispielcode:
> db.collection.find()
AUSGANG:
{
"_id" : ObjectId("62a708054eb9c63e48daeba4"),
"name" : "Mehvish",
"gender" : "Female",
"fields" : [
{
"_id" : 1,
"items" : [
{ "item" : 1, "key" : 0 },
{ "item" : 3, "key" : 0 },
{ "item" : 4, "key" : 0 },
{ "item" : 5, "key" : 0 },
{ "item" : 6, "key" : 0 },
{ "item" : 7, "key" : 0 }
]
}
]
}
{
"_id" : ObjectId("62a708054eb9c63e48daeba5"),
"name" : "Thomas Christopher",
"gender" : "Male",
"fields" : [
{
"_id" : 1,
"items" : [
{ "item" : 1, "key" : 0 },
{ "item" : 3, "key" : 0 },
{ "item" : 4, "key" : 0 },
{ "item" : 5, "key" : 0 },
{ "item" : 6, "key" : 0 },
{ "item" : 7, "key" : 0 }
]
}
]
}
Um die obige Ausgabe zu erhalten, lesen wir alle Daten aus der Sammlung und verwenden forEach(), um über jedes einzelne Dokument der Sammlung zu iterieren. Als nächstes verwenden wir ein weiteres forEach(), um jedes einzelne Feld des angegebenen Dokuments zu durchlaufen.
Dann wird mit dem dritten forEach() über die Werte des Feldes fields.items aus der collection iteriert. Aus jedem Wert bilden wir das gewünschte Update und speichern es in der Variable aNewItem, die mit der Methode push() weiter in das Array newItems eingefügt wird.
Danach erstellen wir ein Dokument mit dem Array oneField._id und newItems, das in das Array newFields geschoben wird, das weiter verwendet wird, um die collection zu aktualisieren.
Verwandter Artikel - MongoDB Array
- MongoDB Element zu Array hinzufügen
- Suchen Sie ein bestimmtes Dokument mit Array in MongoDB
- MongoDB Element aus einem Array entfernen
