Quiero establecer un campo a un valor de un campo anidado
dado
{ "_id":"myId", "data":{ "id":"asdfasdfasdf", "text":"Wonderful text" } }esperado
{ "_id":"myId", "messageId":"asdfasdfasdf", "data":{ "id":"asdfasdfasdf", "text":"Wonderful text" } }¿Existe la posibilidad de hacer algo así?
db.myCollection.updateMany({},{ $set: {"messageId": "$data.id"} },false,true)Estoy usando MongoCompass -> _MongoSH
Sí, es posible hacer esto usando actualizaciones canalizadas , agregadas en la versión 4.2.
Así es como lo usas:
db.collection.updateMany( {}, [ { $set: { "message": "$data.id" } } ])Para versiones menores de Mongo, primero debe leer el documento y luego usar los valores para la actualización.