如何使用Node.js猫鼬删除文档?

FBFriendModel.find({
    id: 333
}, function (err, docs) {
    docs.remove(); //Remove all the documents that match!
});

以上似乎不起作用。记录仍然存在。

有人可以修复吗?

小次郎2020/03/19 11:16:35
db.collection.remove(<query>,
 {
  justOne: <boolean>,
  writeConcern: <document>
})
猿阿飞2020/03/19 11:16:35

使用remove()方法可以删除。

getLogout(data){
        return this.sessionModel
        .remove({session_id: data.sid})
        .exec()
        .then(data =>{
            return "signup successfully"
        })
    }
泡芙卡卡西神乐2020/03/19 11:16:35

更新:.remove()已折旧,但仍适用于旧版本

YourSchema.remove({
    foo: req.params.foo
}, function(err, _) {
    if (err) return res.send(err)
    res.json({
        message: `deleted ${ req.params.foo }`
    })
});
小卤蛋神乐2020/03/19 11:16:35

您可以随时使用Mongoose内置功能:

var id = req.params.friendId; //here you pass the id
    FBFriendModel
   .findByIdAndRemove(id)
   .exec()
   .then(function(doc) {
       return doc;
    }).catch(function(error) {
       throw error;
    });
Harry乐2020/03/19 11:16:34

您可以直接在remove函数中使用查询,因此:

FBFriendModel.remove({ id: 333}, function(err){});
Davaid神乐2020/03/19 11:16:34

要删除文档,我更喜欢使用 Model.remove(conditions, [callback])

请参阅API文档以进行删除:-

http://mongoosejs.com/docs/api.html#model_Model.remove

在这种情况下,代码将是:

FBFriendModel.remove({ id : 333 }, function(err, callback){
console.log(‘Do Stuff’);
})

如果要删除文档而不等待MongoDB的响应,则不要传递回调,那么您需要在返回的Query上调用exec

var removeQuery = FBFriendModel.remove({id : 333 });
removeQuery.exec();
卡卡西Mandy2020/03/19 11:16:34

我更喜欢在您需要的地方使用承诺符号,例如

Model.findOneAndRemove({_id:id})
    .then( doc => .... )
樱Near2020/03/19 11:16:34

如果您只想删除一个对象,则可以使用

Person.findOne({_id: req.params.id}, function (error, person){
        console.log("This object will get deleted " + person);
        person.remove();

    });

在此示例中,猫鼬将基于匹配的req.params.id进行删除。

小小Gil2020/03/19 11:16:34

.remove()像这样工作.find()

MyModel.remove({search: criteria}, function() {
    // removed.
});
Eva阿飞2020/03/19 11:16:34

mongoose.model.find()返回一个也具有功能查询对象remove()

mongoose.model.findOne()如果只想删除一个唯一的文档,也可以使用

否则,您也可以遵循传统方法,在该方法中,首先检索文档然后将其删除。

yourModelObj.findById(id, function (err, doc) {
    if (err) {
        // handle error
    }

    doc.remove(callback); //Removes the document
})

以下是关于model对象的方法,您可以执行以下任一操作来删除文档:

yourModelObj.findOneAndRemove(conditions, options, callback)

yourModelObj.findByIdAndRemove(id, options, callback)

yourModelObj.remove(conditions, callback);

var query = Comment.remove({ _id: id });
query.exec();
古一Pro2020/03/19 11:16:34

remove()已不推荐使用。使用deleteOne()deleteMany()bulkWrite()

我使用的代码

TeleBot.deleteMany({chatID: chatID}, function (err, _) {
                if (err) {
                    return console.log(err);
                }
            });
斯丁蛋蛋2020/03/19 11:16:34

简单地做

FBFriendModel.remove().exec();
JinJinGreen2020/03/19 11:16:34

docs是一系列文档。所以它没有mongooseModel.remove()方法

您可以分别迭代和删除数组中的每个文档。

或-由于看起来您是通过(可能是)唯一的ID查找而不是来查找文档findOnefind

Green猿2020/03/19 11:16:34

如果您不想迭代,请尝试FBFriendModel.find({ id:333 }).remove( callback );FBFriendModel.find({ id:333 }).remove().exec();

mongoose.model.find返回一个具有功能查询remove

Mongoose v5.5.3的更新- remove()现在已弃用。使用deleteOne()deleteMany()findOneAndDelete() instead.