node js mongodb ObjectID约束器用法

时间:2017-03-26 13:54:43

标签: node.js mongodb

使用NodeJS的官方MongoDB驱动程序,我使用find({})方法提取文档,当尝试使用updateOne({_ id:doc._id},...)更新其中一个文档时,它什么都不做,我发现我需要使用{_id:new ObjectID(doc_id)}才能成功更新。我不明白这背后的想法,doc._id是我直接从数据库中提取的东西,在进程中发生了哪些变化使得它与数据库中的_id无法匹配?另外,我已经设法使用{_id:doc._id}成功找到了没有ObjectID构造函数的文档,只有updateOne方法不起作用。什么是ObjectID构造函数背后的逻辑?每次我使用从中提取的id与数据库进行通信时,是否需要使用它?例如,如果我想插入doc._id作为另一个文档的属性。

编辑:这里是代码的相关部分:

db.collection('students')
    .insertOne(poolStudent, (err, docs)=>{
        if(err){throw new Error(err)}
        cb(docs.ops[0]) //where i get the student entity from
})

db.collection('students')
    .updateOne({_id: student._id}, 
        {$set: {rating: student.rating}}, function(err, r) {
            if(err){console.log(err)}
            console.log(r.result.n, r.result.nModified) //0, 0
})

0 个答案:

没有答案