我的变量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

08-07 23:08