javascript - MongoDB 上的 .updateOne 在 Node.js 中不起作用

标签 javascript node.js mongodb mongodb-query

我有以下代码:

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);
                })
        })

我想更改订单中的名称,但没有更新。 控制台中的结果是

已更新 - {"n":0,"nModified":0,"ok":1}

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

编辑:{$set: {"name": req.body.name}}, 效果不佳

编辑 2:传递的 ID 与数据库中的 _id 匹配。我在数据库中查询纯文本 ID 是否是一个问题,它被称为“ObjectId('5a42ja...')”

最佳答案

也许您应该像这样在更新查询中使用“$set”:

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

更多信息见 documentation

编辑

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

也许你应该尝试匹配这样的 ObjectId:

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

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

希望对你有帮助。

关于javascript - MongoDB 上的 .updateOne 在 Node.js 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47656515/

相关文章:

javascript - Komodo Edit 自动补全 JS 对象字面量

javascript - Backbone/View JQuery 问题 - _.extend 不是函数,无法读取未定义的属性 'extend'

node.js - 部署到 AWS Elastic Beanstalk 失败,出现异常 "invalid byte sequence in UTF-8"

mongodb - 结合 mongo $push 和 $currentDate 以将时间包含在新的数组元素中

javascript - 样式化 jQuery ThickBox(圆 Angular )

javascript - iframe表单验证失败时让父页面滚动到顶部

javascript - Express应用程序即时通知架构建议

node.js - axios get 请求挂起,没有错误,catch 未触发

mongodb - 所有NoSQL框架都使用Hadoop文件系统吗?

ruby-on-rails - 如何在 ubuntu 16.04 中将 ruby​​ 从 2.0.0 更新到 2.2.2?