Mongoose findOneAndUpdate()不使用NodeJS更新mongodb中的集合

时间:2017-08-23 19:12:04

标签: mongoose

我是一个相当新的开发人员,尝试使用NodeJS,MongoDB和Mongoose在API端点的帮助下开发一个简单的CRUD应用程序。使用Mongoose驱动程序的findOneAndUpdate方法更新文档时,我得不到正确的结果。

通过导入CSV文件,在mongoimport命令的帮助下形成集合。请考虑我有以下文件。

{
"_id" : ObjectId("599c8da6b18e3117b09ea299"),
"MetaKey" : "lastWPSyncedStatus",
"MetaValue" : "Running"

}

这里的MetaKey是lastWPSyncedStatus,其对应的值将转为Running。

我需要做的就是当" / test / client"端点被点击我想将 lastWPSyncedStatus更新为STOP 。使用PUT HTTP方法提交URL以进行更新。

RosterOptions.findOneAndUpdate(
    {
        'MetaKey' : 'lastWPSyncedStatus'

    },
    {
        $set:
            {
                'MetaValue': 'STOP'
            } 
    },
    {
        new: true

    },
    function(err,data){
        if(err){
            res.send(err);
        }
        res.json(data);
        // console.log(data);
    }
)

我正在尝试将MetaValue更新为“停止”'将MetaKey作为' lastWPSyncedStatus'的文档。我尝试在nodejs中提交查询,它返回没有任何错误,但mongodb没有更新。此外,当我为mongoose设置调试时,以下查询将提交给mongoose。

Mongoose: rosterOptions.findOne({ MetaKey: 'lastWPSyncedStatus' }, { new: true, fields: {} })

输出是:

{
"_id": "599c8da6b18e3117b09ea299",
"MetaKey": "lastWPSyncedStatus",
"MetaValue": "Running"

}

我无法确定问题所在。我也尝试使用更新方法,但我得到以下输出。

{
"ok": 0,
"n": 0,
"nModified": 0

}

当我尝试在mongodb中运行函数update()时,我的文档已正确更新。

我提到mongoose documentation并试图以类似的方式实施它。如果有人能引导我解决这个问题,我会很高兴。

1 个答案:

答案 0 :(得分:0)

我找到了问题的答案。我错误地定义了一个模式,因为mongoose无法正确识别我的集合。我通过修改架构修复了这个问题。将其标记为答案。