Necesito su ayuda para escribir una consulta de reemplazo. He conectado un software de terceros mongodb. Soy un tipo de SQL y no puedo escribir una consulta de reemplazo de un valor de nodo específico.
Estoy usando el software Robo 3T. A continuación se muestra un registro json del documento.
{ "_id" : ObjectId("6036c343445f3640c53e0a"), "shares" : [ { "shareId" : ObjectId("6035cc6acf345f3640c53d1a"), "type" : "user" }, { "shareId" : ObjectId("6035b536cf345f3640c53cae"), "type" : "group", "rule" : "view", "subscribe" : false } ], "tags" : [], "lastUsed" : ISODate("2021-03-09T16:51:30.059Z"), "usageCount" : 1, "layout" : { too many values with multiple node. }, "instanceType" : "owner", "original" : null, "editing" : true, "filters" : [ { "jaql" : { "table" : "Xyz", "column" : "title", **"dim" : "[dbo.ketan.Title]",** } } "disabled" : false }, { "jaql" : { "table" : "abc", "column" : "name", **"dim" : "[dbo.ketan.name]",** "datatype" : "text", "merged" : true, "title" : "Inventor Name", "filter" : { "explicit" : false, "multiSelection" : true, "all" : true }, "collapsed" : false }, "instanceid" : "1B1E4-F6DC-28", "isCascading" : false }, }
Aquí quiero reemplazar "dim": "[dbo.ketan.name]", por "dim": "[kiran.name]",
¿Puedes ayudarme a escribir una consulta?
Esta es mi primera publicación. La Escritura puede no estar a la altura. Por favor, hágamelo saber si necesita más detalles.
Gracias.
Así es como puede lograr la funcionalidad. Aunque su versión de MongoDB debería ser> = 3.6
db.collection.update( //collection {"filters.jaql.dim": {"$regex": "dbo.ketan"}}, //update filter {"$set": {"filters.$[elem].jaql.dim": "[kiran.name]"}}, //update action { "arrayFilters": [ { "elem.jaql.dim": { "$regex": "dbo.ketan" } }], "multi": true } //filters for all element to be updated )
Para ver esta lógica en acción: Ejemplo de MongoPlayground