Estoy intentando, en mongoDB usando mongosh, reemplazar todas las palabras que selecciono en una colección por otras.
Ejemplo, tengo esto:
_id:12345678901 name:"Peter Parker" profession:"Superhero" _id:12345678902 name:"Peter Parker" profession:"Journalist" _id:12345678902 name:"Hulk" profession:"Software Developer"Y quiero reemplazar todos los "Peter Parker" con "Superman" en una colección llamada "firstList" para obtener esto:
_id:12345678901 name:"Superman" profession:"Superhero" _id:12345678902 name:"Superman" profession:"Journalist" _id:12345678902 name:"Hulk" profession:"Software Developer"Estoy intentando esto, pero no funciona:
db.firstList.replace({ "name": { "$regex": "(/( |^)Peter Parker\b/g, "$Superman")" } })De acuerdo con sus datos, no necesita regex , puede usar la palabra en la etapa de búsqueda tal como está.
Puede usar una consulta de agregación en la actualización usando [] así:
db.collection.update({ "name": { "$regex": "Peter Parker" } }, [ { "$set": { "name": { "$replaceAll": { "input": "$name", "find": "Peter Parker", "replacement": "Superman" } } } } ], { "multi": true })Ejemplo aquí
Por cierto, puede usar la expresión regular en el objeto de find si lo desea. Pero si desea hacer coincidir la palabra completa "Peter Parker", puede usarla sin expresiones regulares.