使用mongoose通过update方法在mongodb中为现有文档添加新字段

sab*_*per 10 mongoose mongodb node.js

我正在尝试使用node.js中的mongoose更新mongodb文档

如果该字段存在,则更新有效,但如果该字段不存在,则更新将不起作用.

我想在文档中添加新字段.

MongoDB查询(https://docs.mongodb.com/v3.2/reference/operator/update/set/#behavior)正在运行:

db.getCollection('users').update({ 'uid': 'uid' }, { $set: { 'vehicle_status': 'bike' } })  
Run Code Online (Sandbox Code Playgroud)

但是当它在mongoose中完成时它将无法工作.使用$ set不会添加字段.

User.update({ uid: uid }, { $set: { vehicle_status: vehicleSatus } }, { multi: true })
Run Code Online (Sandbox Code Playgroud)

Tim*_*ker 15

请尝试以下代码:

User.update(
     {uid: 'uid'}, 
     {vehicle_status : 'vehicleSatus' },
     {multi:true}, 
       function(err, numberAffected){  
       });
Run Code Online (Sandbox Code Playgroud)

此外,请确保将vehicle_status添加到架构中.

  • Marwan Ossama,不,您在模式中需要它,因为模式定义了文档结构。我想如果您无权访问架构,您可以使用现有字段并可能在现有字段中存储字符串,但这不是一个很好的解决方案,但有时如果您使用的是闭源系统或类似的东西。然而,在这种情况下,上面的代码是无关紧要的。 (3认同)
  • 另外,请确保将vehicle_status 添加到架构中。- 重要的! (2认同)

Shu*_*u.T 5

在 2019 年经历了这个解决方案。

请注意:collection.update已弃用。使用updateOne, updateMany, 或bulkWrite代替