我有以下代码:
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/