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