![](/img/trans.png)
[英]how to pull data from browser using ajax and store in my mongoDB
[英]How to pull data from mongodb using nodejs?
我在 mongoDb 中有一个数据,如下所示:
{
"_id": "5fe1cf1230ecc74464f07c7e"
"subjects": [
"english",
"math",
"social",
"science"
],
}
我想从主题中删除单个数据,我编写了如下代码:
exports.reldata = async (req, res) => {
const subject = req.body.subjects;
console.log(req.params.id);
SingleCourse.find({ _id: req.params.id }).updateOne(
{
$pull: { subjects: [...subject] },
},
(err, doc) => {
console.log("from pull", doc);
}
);
}
在控制台中,它会返回一条成功消息,如下所示:
from pull { n: 1, nModified: 1, ok: 1 }
但是当我查看我的数据库时,数据仍然存在在那里。 它不会删除数据。 请任何人都可以帮助解决我的问题。 我正在使用 nodejs,快递,mongodb。 我正在使用 postman 发送数据
下面是我的工作代码
SingleCourse.update(
{ _id: req.params.id},
{ $pull: { subjects: [...subject] } },
{ safe: true },
function callback(err, obj) {
console.log(obj);
}
);
是的,$pull 是一个数组更新运算符,我相信它不能与updateOne()
一起使用。 我们只需要使用.update()
。 如果要使用updateOne()
,则需要使用$set/$unset
字段运算符来修改值。 请参阅下面的updateOne()
文档。 第一个参数只是一个过滤器,只有第二个参数携带更新的信息。
https://docs.mongodb.com/manual/reference/method/db.collection.updateOne/
你可以像这样达到你想要的结果:
exports.reldata = async (req, res) => {
const subject = req.body.subjects;
const filter = { _id: req.params.id };
const updateDoc = {
$set: {
subjects: subject,
},
};
const result = await SingleCourse.updateOne(filter, updateDoc);
console.log(
`${result.matchedCount} document(s) matched the filter, updated ${result.modifiedCount} document(s)`
);
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.