【问题标题】:NodeJs Says Document has been deleted but it is not deleting it [duplicate]NodeJs说文档已被删除但它没有删除它[重复]
【发布时间】:2019-08-22 08:58:49
【问题描述】:

我正在使用 nodejs 和 mongoDB。

我正在尝试通过给它 _id 从集合中删除一个文档。

所以我正在使用这个:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
    if (err) throw err;
    var dbo = db.db("myDatabase");
    console.log(req.params.id);
    var myquery = { _id: "5c9e0e721b27d11d38dca8da" };
    dbo.collection("myCollection").deleteOne(myquery, function(err, obj) {
        if (err) throw err;
        console.log("1 document deleted");
        db.close();
    });
});

控制台显示 1 个文档已删除,但它没有删除任何内容,也没有抛出任何错误。

我在这里做错了什么?

【问题讨论】:

标签: node.js mongodb


【解决方案1】:

obj 将包含一个deletedCount,它可能表示为 0。尝试删除不存在的对象并不是失败。

正如@iofjuupasli 指出的那样,您可能需要在过滤器中包含 _id 才能成为实际的 ObjectID,例如:

var myquery = { _id: ObjectId("5c9e0e721b27d11d38dca8da") };

【讨论】:

  • 这给了我错误:ReferenceError: ObjectId is not defined
  • 需要从mongodb包中导入。 const { MongoClient, ObjectId } = require('mongodb'); 如果您使用的是节点 8+。否则,单独导入它们。
猜你喜欢
  • 1970-01-01
  • 2019-10-24
  • 1970-01-01
  • 2021-12-21
  • 1970-01-01
  • 2016-09-09
  • 2015-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多