如何在mongodb2.4上使用findByIdAndUpdate?

How to use findByIdAndUpdate on mongodb2.4?

backbone 客户端更新模型 属性:

ocase.save({ currentStep : theStep },callback);

服务器端猫鼬代码:

OCase.findByIdAndUpdate(req.params.id,
        req.body, callback);

在mongodb2.6上运行正常,在mongodb2.4上运行不正常,报错:

update err:MongoError: exception: Mod on _id not allowed

所以我尝试删除“_id”,只保存其他属性:

OCase.findByIdAndUpdate(req.params.id,
            {subject    : req.body.subject,
            description : req.body.description    
        },callback);

然后我得到了另一个错误:

update err:TypeError: Cannot read property '_id' of undefined

我真的很迷茫,我现在该怎么办?

最后只好先查询(findById)文档,然后调用"save"方法更新

OCase.findById(req.params.id,
        function(err,ocase){
            ocase.set(req.body);
            ocase.save(function(err,ocase){
                res.send(ocase);

            });
        });

通过添加$set运算符解决:

OCase.findByIdAndUpdate(req.params.id, {
        $set: {
            subject: req.body.subject,
            description: req.body.description,
            currentStep: req.body.currentStep
        }
    }, callback);