Mongodb查询在nodejs中不起作用。为什么这段代码不起作用?

时间:2016-07-07 23:02:54

标签: node.js mongodb

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

1 个答案:

答案 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