我的变量id中包含对象ID,但是当我运行此updateOne查询时,它不会更新数据库中的文档。当我用updateOne({})替换updateOne参数时,它会正确更新数据库中的第一条记录,所以我知道我的set语法是正确的...所以问题必须出在这行代码中:
{"_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
答案 0 :(得分:1)
请你试试看看它是否有效:
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