Mongoose:如何从文档实例中的数组中提取

时间:2015-04-16 21:52:25

标签: mongoose

假设我在Mongoose中有以下架构:

var OrganisationSchema = mongoose.Schema({
  name:       { type: String },
  users:      [ UserSchema ]
});

var UserSchema = mongoose.Schema({
  name:       { type: String, required: true },
  email:      { type: String, required: true }
});

我在mongoose的docs中看到了这个例子

doc.array.pull(ObjectId)
doc.array.pull({ _id: 'someId' })
doc.array.pull(36)
doc.array.pull('tag 1', 'tag 2')

因此我想知道为什么这个功能不起作用:

OrgSchema.methods.removeUser = function(mail, onRemoveError, onRemoveSucess) {
  var org = this;
  org.users.pull({email: mail});
  org.save(function(err) {
    if(err) {
      onRemoveError(err);
    } else {
      onRemoveSuccess(org); // Gets called but has not removed the user
    }  
  });
};

这种pull不起作用,我想知道为什么? stackoverflow上的大多数问题线程都引用了mongodb pull方法来做这类事情:

Org.update( { _id: orgid }, { $pull: { candidates: { email: mail }}});

这是正确的方法吗?我不能直接在文档数组上拉?

1 个答案:

答案 0 :(得分:1)

我使用文档中指定的org.candidates.pull(id)解决了这个问题。查询参数似乎不起作用。