Avec MongoDB Version 4.2+ sind Aktualisierungen flexibler, da sie die Verwendung von Aggregationspipelines in ihrer update
, updateOne
y updateMany
. Sie können nun Ihre Dokumente mit Hilfe der Aggregationsoperatoren umwandeln und dann aktualisieren, ohne dass Sie explizit angeben müssen, welche $set
Befehl (stattdessen verwenden wir $replaceRoot: {newRoot: "$$ROOT"}
)
Hier verwenden wir die Aggregatabfrage, um den Zeitstempel aus dem ObjectID-Feld "_id" von MongoDB zu extrahieren und die Dokumente zu aktualisieren (ich bin kein SQL-Experte, aber ich denke, dass SQL keine automatisch generierte ObjectID mit einem Zeitstempel zur Verfügung stellt.)
var collection = "person"
agg_query = [
{
"$addFields" : {
"_last_updated" : {
"$toDate" : "$_id"
}
}
},
{
$replaceRoot: {
newRoot: "$$ROOT"
}
}
]
db.getCollection(collection).updateMany({}, agg_query, {upsert: true})