我的变量ID中有对象ID,但是当我运行此updateOne查询时,它不会更新数据库中的文档。当我将updateOne参数替换为updateOne({})时,它确实会正确更新数据库中的第一条记录,因此我知道我的设置语法是正确的...因此,问题必须出在以下代码行中:
{"_id": "ObjectId(\""+id+"\")"}},
但是,当我使用console.log打印该行代码时,它看起来与可以正常工作的mongoDB查询相同。谁能帮我弄清楚为什么那条线不起作用?是否存在类型转换问题或类似问题?
db.collection('profile').updateOne(
{"_id": "ObjectId(\""+id+"\")"}},
{ $set:
{
"star_rating": updatedProfile.test ,
"address.street": updatedProfile.street,
"address.city": updatedProfile.city,
"address.postalcode": updatedProfile.postal,
"address.country": updatedProfile.country,
"phonenumber": updatedProfile.phone,
"birthday": updatedProfile.datepicker
}
}, //set
{
upsert: false //do not create a doc if the id doesn't exist
}
); //updateOne
最佳答案
您可以尝试一下,看看是否可行:
var ObjectID = require('mongodb').ObjectID,
db.collection('profile').updateOne(
{"_id": new ObjectID(id)}},
{ $set:
{
"star_rating": updatedProfile.test ,
"address.street": updatedProfile.street,
"address.city": updatedProfile.city,
"address.postalcode": updatedProfile.postal,
"address.country": updatedProfile.country,
"phonenumber": updatedProfile.phone,
"birthday": updatedProfile.datepicker
}
}, //set
{
upsert: false //do not create a doc if the id doesn't exist
}); //updateOne