假设我在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 }}});
这是正确的方法吗?我不能直接在文档数组上拉?
答案 0 :(得分:1)
我使用文档中指定的org.candidates.pull(id)
解决了这个问题。查询参数似乎不起作用。