Mongoose中Model#remove和Model.remove有什么区别?

时间:2015-07-07 17:21:34

标签: mongodb mongoose

在Mongoose API文档中,有Model#remove,并且Model.remove

有人可以用外行的话来解释这两者之间有什么区别?他们似乎接受不同的参数。为什么一个使用点,另一个使用哈希?除了API文档中的那个之外,我还需要一个更清晰的解释。

1 个答案:

答案 0 :(得分:1)

Model#remove是一个实例方法,Model.remove是一个类方法。

换句话说,假设您有一个名为Users的模型。要从属于该模型的集合中删除某些内容,您有两个选项(此示例有点人为):

Users.findOne(CONDITION, function(err, user) {
  if (err) throw err;
  user.remove(function(err) {
    if (err) throw err;
    // user is removed
  });
});

这使用Model#remove:您有一个存储在user中的模型实例,并通过调用实例上的remove方法从数据库中删除该实例。

另一种选择:

Users.remove(COND, function(err) {
  if (err) throw err;
  // user_s_ matching COND have been removed
});

基本上,Model#remove用于删除您已有的实例的单个文档,Model.remove用于删除可能符合特定条件的文档列表,或者文档你不一定要先从数据库中检索。