如何替换_id匹配的文档?

时间:2017-06-07 21:24:37

标签: node.js mongodb

使用API​​我想要对MongoDB对象进行完整的文档更新。

这是我当前的代码,但每次都必须删除_id感觉不对。有更好的方法吗?

        PutDoco : function(doco){
            return new Promise(function(Resolve,Reject){
                delete doco._id;
                db.collection('docos').updateOne(
                    {"details.ID":doco.details.ID},
                    doco,
                    function(err,result){
                        if(err)
                            return Reject(err);

                        Resolve(result);
                    }
                );
            });
        },

1 个答案:

答案 0 :(得分:2)

当替换文档的所有内容时(_id除了不可变),您可以使用replaceOne。并且因为replaceOne返回一个承诺,如果你没有传递一个回调,你可以将整个函数减少到:

return db.collection('docos').replaceOne({"details.ID":doco.details.ID}, doco);

但是,使用_id找到要替换的文档可能更清晰(也更快):

return db.collection('docos').replaceOne({_id: doco._id}, doco);