我有以下代码:

connection((db) => {
            db.collection('orders')
                .updateOne(
                    { "_id": req.body._id}, // Filter
                    {"name": req.body.name} // Update
                )
                .then((obj) => {
                    console.log('Updated - ' + obj);
                    res.redirect('orders')
                })
                .catch((err) => {
                    console.log('Error: ' + err);
                })
        })

我想按顺序更改名称,但不会更新它。控制台的结果是

Updated - {"n":0,"nModified":0,"ok":1}

我试图阅读文档,但这太可怕了

编辑:{$set: {"name": req.body.name}},也没有工作

编辑2:传递的ID与数据库中的_id匹配。当我在数据库中查询纯文本ID时,它被称为" ObjectID(‘5A42JA …’)",这可能是一个问题。

答案

也许您应该在更新查询中使用" $ set":

{$set: {"name": req.body.name}}, // Update

更多信息文档

EDIT

如果它不起作用,这可能是因为与您的过滤器没有匹配。

也许您应该尝试与这样的objectid匹配:

var ObjectID = require('mongodb').ObjectID;

// In your request
{ "_id": ObjectID(req.body._id)}, // Filter

希望能帮助到你。

来自: stackoverflow.com