【问题标题】:how to add a number to a integer field using nodejs and mongodb如何使用nodejs和mongodb将数字添加到整数字段
【发布时间】:2022-01-17 18:25:12
【问题描述】:

我有一个这样的收藏。

 {
"_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
            });```

【问题讨论】:

  • 您好,首先我想问一下数据。是来自 MongoDB 还是只是一个 JSON 文件?
  • 这能回答你的问题吗? Modify object property in an array of objects
  • 你问how to add a number to a integer field using nodejs,但你的尝试不是node而是mongo
  • 您可能不想在电话号码字段中使用数字类型 - 我可能更喜欢字符串类型。见en.wikipedia.org/wiki/E.164

标签: javascript node.js mongodb mongoose


【解决方案1】:

我不确定这是不是最好的解决方案,但是

parseInt('91' + user.phonenumber.toString())

【讨论】:

    【解决方案2】:

    要么添加 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)

    【讨论】:

      【解决方案3】:

      假设您有一个数组中的数据

      [{
      "_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)
      

      就是这样,希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-27
        • 2015-11-21
        • 2017-09-27
        • 2022-10-25
        相关资源
        最近更新 更多