У меня есть такая коллекция.

 {
"_id": "6137392141bbb7723",
"email": "brooke@cagle.com",
"lastname": "Cagle",
"firstname": "Brooke",
"phonenumber":9000000001
},
{
"_id": "6137392141bbe30723",
"email": "brooke@cagle.com",
"lastname": "Cagle",
"firstname": "Brooke",
"phonenumber":9000000002`
}

Цель состоит в том, чтобы обновить поле номера телефона на 91. Я хочу вставить 91 перед каждым номером телефона пользователей.

{
"_id": "6137392141bbb7723",
"email": "brooke@cagle.com",
"lastname": "Cagle",
"firstname": "Brooke",
"phonenumber":919000000001
},
{
"_id": "6137392141bbe30723",
"email": "brooke@cagle.com",
"lastname": "Cagle",
"firstname": "Brooke",
"phonenumber":919000000002
}

Я пытаюсь с updateMany

const doc = await User.updateMany(
            {}, 
            { $set: { 
                //missing here
              }},
            {
                new: true, 
                runValidators : true
            });```
-1
sai krishna 17 Янв 2022 в 13:09
Здравствуйте, сначала я хочу спросить о данных. Это из MongoDB или просто файл JSON?
 – 
Anas Ben Yaiche
17 Янв 2022 в 13:12
Отвечает ли это на ваш вопрос? Изменить свойство объекта в массиве объектов
 – 
pilchard
17 Янв 2022 в 13:13
Вы спрашиваете how to add a number to a integer field using nodejs, но ваша попытка не node, а mongo
 – 
mplungjan
17 Янв 2022 в 13:21
1
Возможно, вы не захотите использовать числовой тип для полей номера телефона — я, вероятно, предпочел бы строковый тип. См. en.wikipedia.org/wiki/E.164.
 – 
schwaber
17 Янв 2022 в 13:24

3 ответа

Я не уверен, что это лучшее решение, но

parseInt('91' + user.phonenumber.toString())
0
Nikita Glazunov 17 Янв 2022 в 13:14

ЛИБО добавить 910000000000

data.forEach(item => item.phonenumber += 910000000000)

ИЛИ

Объединить "91" и преобразовать строку обратно в число

data.forEach(item => item.phonenumber = +("91"+item.phonenumber))

const data =  [{
"_id": "6137392141bbb7723",
"email": "brooke@cagle.com",
"lastname": "Cagle",
"firstname": "Brooke",
"phonenumber":9000000001
},
{
"_id": "6137392141bbe30723",
"email": "brooke@cagle.com",
"lastname": "Cagle",
"firstname": "Brooke",
"phonenumber":9000000002
}]

data.forEach(item => item.phonenumber += 910000000000)
console.log(data)
0
mplungjan 17 Янв 2022 в 13:20

Предположим, что у вас есть данные из массива

[{
"_id": "6137392141bbb7723",
"email": "brooke@cagle.com",
"lastname": "Cagle",
"firstname": "Brooke",
"phonenumber":919000000001
},
{
"_id": "6137392141bbe30723",
"email": "brooke@cagle.com",
"lastname": "Cagle",
"firstname": "Brooke",
"phonenumber":919000000002
}]

Прежде всего, вам нужно разобрать его на JavaScript, если это файл, вам нужен модуль fs, чтобы иметь возможность извлекать данные.

// parse to js
const array = JSON.parse(data);
const formattedArray = array.map( user => ({...user, phonenumber:  Number(`91${user. phonenumber}`) })) 
const newData = JSON.stringify(formattedArray)

Вот и все, я надеюсь, что это может помочь вам

0
Anas Ben Yaiche 17 Янв 2022 в 13:21