Mi colección tiene un campo de número de phonenumber . Quiero agregar 91 delante del número de teléfono.
{ "_id": "6137392141bbb7723", "email": "brooke@cagle.com", "lastname": "Cagle", "firstname": "Brooke", "phonenumber":9000000001 }, { "_id": "6137392141bbe30723", "email": "brooke@cagle.com", "lastname": "Cagle", "firstname": "Brooke", "phonenumber":9000000002 }Quiero actualizar mi colección así.
{ "_id": "6137392141bbb7723", "email": "brooke@cagle.com", "lastname": "Cagle", "firstname": "Brooke", "phonenumber":919000000001 }, { "_id": "6137392141bbe30723", "email": "brooke@cagle.com", "lastname": "Cagle", "firstname": "Brooke", "phonenumber":919000000002 }Estoy intentando con este código pero no está actualizando el campo.
var x = await User.find({}); x.forEach(async function(d) { var phone = d.phonenumber; var newPhoneNumber = 910000000000+phone; console.log(newPhoneNumber); //update await User.updateMany({},{$set:{phonenumber:newPhoneNumber}}, { new: true, runValidators : true }); })Solo obtengo un valor para todos los documentos como este:
{ "_id": "6137392141bbb7723", "email": "brooke@cagle.com", "lastname": "Cagle", "firstname": "Brooke", "phonenumber":919000000001 }, { "_id": "6137392141bbe30723", "email": "brooke@cagle.com", "lastname": "Cagle", "firstname": "Brooke", "phonenumber":919000000001 }, { "_id": "6137392141bbe30723", "email": "brooke@cagle.com", "lastname": "Cagle", "firstname": "Brooke", "phonenumber":919000000001 }No sé si este enfoque es correcto o no.
db.collection.update({}, //To match all documents [{ $set: { key: { $toInt: { $concat: [ "91", { $toString: "$key" } ] } } } } ], //Concatenate 91 and the value in the field {multi: true })Esto es aplicable para las versiones de mongo desde 4.2. Esta es una canalización de agregación que se utiliza en la consulta de actualización.
EDITAR:
Habría obtenido un error de desbordamiento. Podría usar toLong en este caso.
db.mybooks.update({}, //To match all documents [{ $set: { key: { $toLong: { $concat: [ "91", { $toString: "$key" } ] } } } } ], //Concatenate 91 and the value in the field {multi: true })Es una pieza de código probada.
He encontrado una solución. Tal vez, esto funcione,
let mobile = 9876543210; let phone = `91${mobile}`; let final = Number(phone) console.log(typeof(final), final+3);Asi que,
var phone = d.phonenumber; var newPhoneNumber = Number(`91${phone}`); console.log(newPhoneNumber);Lea más sobre Number(): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number