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 })
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.
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" });
})
Going through this solution in Year 2019.
Please note: collection.update
is deprecated. Use updateOne
, updateMany
, or bulkWrite
instead
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With