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

Mongoose findOneAndUpdate()未使用NodeJS更新mongodb中的集合,mongoose,Mongoose,我是一个相当新的开发人员,试图在使用NodeJS、MongoDB和Mongoose的API端点的帮助下开发一个简单的CRUD应用程序。当使用Mongoose驱动程序的findOneAndUpdate方法更新文档时,我没有得到正确的结果 集合是在mongoimport命令的帮助下通过导入CSV文件形成的。考虑一下我有以下的文件。 { "_id" : ObjectId("599c8da6b18e3117b09ea299"), "MetaKey" : "lastWPSyncedStatus", "Me

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

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

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

这里的元键是lastWPSyncedStatus,它对应的值是Running

我在这里需要做的就是,当一个“/test/client”端点被点击时,我想更新lastWPSyncedStatus以停止。URL使用PUT HTTP方法提交以进行更新

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

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

    },
    function(err,data){
        if(err){
            res.send(err);
        }
        res.json(data);
        // console.log(data);
    }
)
我正在尝试将元键为“lastWPSyncedStatus”的文档的元值更新为“STOP”。我已经尝试在nodejs中提交查询,它返回时没有任何错误,但是mongodb没有更新。另外,当我为mongoose设置调试时,以下查询将提交给mongoose

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

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

我无法确定问题所在。我也尝试过使用update方法,但得到了以下结果

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

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


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

我找到了问题的答案。我在正确定义模式时犯了一个错误,因为mongoose无法正确识别我的集合。我已经通过修改模式解决了这个问题。将其标记为答案

你能分享
RosterOptions
collection的猫鼬模式吗?嘿,@ryder我已经正确地解决了这个问题。我在正确定义模式时犯了一个错误,因此我遇到了这个问题。谢谢你的快速回复。我一直在转圈,谢谢分享!