繁体   English   中英

如何使用 nodejs 从 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM