如何在使用Node.js和MongoDB更新文档后获取对象ID

时间:2017-08-23 10:29:32

标签: node.js mongodb

我正在使用Node.js更新我的文档,我需要在更新后获取该文档ID。我在下面解释我的代码。

 var udata={
            name:name,
            company:company,
            position:position,
            mobile:mobile,
            email: email,
            landline: landline,
            url:url,
            postcode:postcode,
            address:address,
            profiletext:profiletext,
            biography:biography,
            updated_date:updateDate,
            file:file
        }
    db.f_card_details.update({userid:userid},{$set:udata},function(error,docum){
        if (!error) {
            if (docum) {
                console.log('document',docum);
                var edata=[{"id": docum._id}];
                var data={"statusCode": 200,"data":edata ,"message": "Your card details has been updated successfully"};
                res.send(data);
        }
}else{
            var data={"statusCode": 404,"error": "Not Found","message": "Your card details could not updated"};
            res.send(data);
}
                        })

此处我在更新后未收到该文档object id

2 个答案:

答案 0 :(得分:0)

来自mongodb.com this link -

“update()方法返回包含操作状态的WriteResult对象。成功时,WriteResult对象包含与查询条件匹配的文档数,更新插入的文档数和数字修改过的文件:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

答案 1 :(得分:0)

尝试使用findOneAndUpdate

它将返回旧文档,但您可以设置returnNewDocument : true标志以使其返回新标记。

所以你的代码应该是这样的:

db.f_card_details.findOneAndUpdate({userid:userid},{$set:udata},function(error,docum){

    console.log(docum._id);
})