Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using mongoose to add new field to existing document in mongodb through update method

I'm trying to update a mongodb document with mongoose in node.js

When the field exists, the update works, but if the field does not exist, the update will not work.

I want to add new fields to the document.

the MongoDB query ($set) is working:

db.getCollection('users').update({ 'uid': 'uid' }, { $set: { 'vehicle_status': 'bike' } })  

But it will not work when done in mongoose. Using $set does not add a field.

User.update({ uid: uid }, { $set: { vehicle_status: vehicleSatus } }, { multi: true })
like image 690
sabper Avatar asked Feb 09 '17 02:02

sabper


3 Answers

Try the following code:

User.updateOne(
     {uid: 'uid'}, 
     {vehicle_status : 'vehicleSatus' },
     {multi:true}, 
       function(err, numberAffected){  
       });

Also, make sure that you add vehicle_status to the schema.

like image 166
Tim Avatar answered Oct 22 '22 12:10

Tim


According to new scenario always use {upsert:true}.

upsert - if set to true and no record matched to the query, replacement object is inserted as a new record.

   user.updateOne(
                 { email: req.body.email },
                 { $set: { name: 'Aaakash'}},{upsert:true}).then((result, err) => {
                    return res.status(200).json({ data: result, message:"Value Updated" });
                })
like image 40
nagender pratap chauhan Avatar answered Oct 22 '22 13:10

nagender pratap chauhan


Going through this solution in Year 2019.

Please note: collection.update is deprecated. Use updateOne, updateMany, or bulkWrite instead

like image 4
Shu.T Avatar answered Oct 22 '22 13:10

Shu.T