Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

733
Views
Cómo cambiar el nombre del campo mongodb usando la expresión regular

Estoy tratando de actualizar el nombre de un campo en el documento mongodb usando la expresión regular en el nombre de ese campo pero no puedo, ¿alguien puede ayudarme a hacerlo? Tengo un documento de persona que contiene un campo con el correo electrónico de la persona, el nombre de ese campo es "firstname_lastname@gmail.com" y quiero reemplazar el carácter "_" en todos los campos de correo electrónico por "_dot_" . Aquí esta lo que hice :

 db.getCollection("person").updateMany( { {'email.'+'.*_.*': { $exists: true } }, { $rename:{'email.'+'.*_.*': 'email.'+'.*_dot_.*' });

y aquí la estructura de mi documento:

 person { name: { .... } email:{ firstname_lastname1@gmail.com : { .... other fields }, firstname_lastname2@gmail.com : { .... other fields } } }

gracias de antemano

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Como sugirió @Wernfried Domscheit en el comentario, debe cambiar su esquema para evitar el uso de una dirección de correo electrónico dinámica como nombre de campo.

Sin embargo, puede usar $objectToArray para convertir los correos electrónicos en una matriz de tuplas kv. Luego, $split divídalos por _ y vuelva a unirlos por _dot_ . Finalmente, haga $arrayToObject para volver a convertir a la estructura original.

 db.collection.aggregate([ { "$addFields": { "email": { "$objectToArray": "$email" } } }, { "$addFields": { "email": { "$map": { "input": "$email", "as": "e", "in": { k: { "$ltrim": { "input": { "$reduce": { "input": { "$split": [ "$$ek", "_" ] }, "initialValue": "", "in": { "$concat": [ "$$value", "_dot_", "$$this" ] } } }, "chars": "_dot_" } }, v: "$$ev" } } } } }, { "$addFields": { "email": { "$arrayToObject": "$email" } } } ])

Aquí está el Mongo Playground para su referencia.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!