Mongoose查询包含objectId数组的子文档

时间:2014-05-13 19:19:57

标签: node.js mongodb mongoose

我有以下架构:

var groupSchema = mongoose.Schema({
name: {type: String, index: {unique: true, dropDups: true}},
createdBy: String,
availableModules: [Number],
members: [{type: Schema.Types.ObjectId, ref: 'User'}]
});

“members”字段只是用户表中ObjectID的直接数组。在执行其他操作之前,我需要检查成员子文档集合中是否存在给定的ObjectId(user._id)。

我尝过这样的话:

Group.find({req.body.uid}, {$in: {"members"}}, function(grps){..});

但这不起作用。我尝试过无数其他方法但似乎无法正常工作。我认为这很容易,但我似乎无法弄明白。

编辑进一步调查:

User.findOne({"local.email": req.body.user.email}, function(err, user){
    Group.find({"members": user._id}, function(grps){
        if(grps){ //do something}
    });
});

无论我采用何种方式,grps都为null ..在mongo控制台中,当使用ObjectId(“..”)表示法时,它返回值

db.groups.find({members: ObjectId("5371a4763b32c3620728acb5")})

1 个答案:

答案 0 :(得分:1)

Group.find({members: req.body.uid}, function(err, items){})