猫鼬查找并保存不更新文档

Posted

技术标签:

【中文标题】猫鼬查找并保存不更新文档【英文标题】:mongoose find and save not updating the document 【发布时间】:2017-10-05 05:19:47 【问题描述】:

我正在使用猫鼬来查找和修改并保存回集合。 这是我尝试过的:

if(req.body.writer)
     MyModel.find(writer: req.body.oldname,function (err, data) 
                for(var i = 0; i < data.length; i++)
                    data[i].writer= req.body.newName;
                    data[i].save()                    
                
            );

为什么不更新文档? 问题出在哪里? 谢谢

【问题讨论】:

【参考方案1】:

尝试更新方法:

if(req.body.writer && req.body.newName)
     MyModel.update(
        //search documents with old writer
         writer : req.body.oldname,
        // set writer as newName
         $set :  writer : req.body.newName ,
        "multi": true,
        //check for error
        function (err) 
            if(err)
                res.status(500).send(err);
            
            else
                res.status(200).send('updated successfully..');
            
        
    );

【讨论】:

这只是更新第一次出现。如何更新所有匹配的文档? 您需要传递 "multi": true 作为第三个参数。我已经更新了答案,请检查。

以上是关于猫鼬查找并保存不更新文档的主要内容,如果未能解决你的问题,请参考以下文章

猫鼬在保存前等待查找完成

猫鼬聚合反向查找或没有localField的查找[重复]

如何更新猫鼬嵌套数组文档[重复]

如何使用 $elemMatch 查找和过滤并更新数组的所有元素该元素在猫鼬中有一个特殊的日期?

猫鼬模式中的加入/查找聚合

如何通过填充字段在猫鼬中查找文档?