【问题标题】:Array.push does not seem to work on MongoDBArray.push 似乎不适用于 MongoDB
【发布时间】:2023-04-06 18:18:01
【问题描述】:

我想在 MongoDB 中创建一个动态向量/数组。这个想法很简单:每当有人提交内容时,它应该更新我在 MongoDB 中的数据库中的用户。我为此创建了一个变量。我已经测试过:正确找到了正确的用户。

请找到我的代码的 sn-p。

User.findOne({ name })
          .then(user => {                
            user.something.push(something to push);
          })

我已经将创建时的默认值设置为空:

  something: {   
    type: [String],
    default: []
  }

但是,它不会保存,也不会抛出错误。 有人猜到幕后可能会发生什么吗?我是 MongoDB 新手。

【问题讨论】:

  • 你必须用方法更新它。这是一个包含示例的帖子stackoverflow.com/questions/49741871/…
  • 我找到的解决方案很简单:只需在 .push 之后添加 user.save() 即可!只有一条线!似乎 mongoose 或 mongo 不会自动进行治疗。谢谢大家的见解!我去散步,记得我以前也遇到过同样的问题! ??????

标签: node.js mongodb express


【解决方案1】:

您需要通过另一个调用来更新数据库。

User.findOne({ name })
    .then(user => {                
        user.something.push(something to push);
        User.update({{ _id: user._id }})
    })

也可以直接使用

User.findOneAndUpdate({ name }, { something: ['new_data']});

【讨论】:

    【解决方案2】:

    您可以将 findOneAndUpdate() 与 $push mongodb 运算符一起使用

    User.findOneAndUpdate({name:name},{$push:{ something: 'new_data'}});
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-04
      • 2017-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多