如何通过参考从集合中找到

时间:2014-09-12 18:00:11

标签: node.js express mongoose

我在所有地方和Mongoose的文档中搜索都没有成功。

我想搜索我的用户集合中来自“管理员”类型的所有内容。

UserTypeSchema = new Schema({
    name: {
        type: String,
        required: true
    },
    user_type: [
        {
            type: Schema.Types.ObjectId,
            ref: 'User'
        }
    ],
}, {
    strict: true
});

UserSchema = new Schema({
    user_type: {
        type: Schema.Types.ObjectId,
        ref: 'UserType'
    },
}, {
    strict: true
});

查询按类型查找用户(作为参考的另一个模型)

User
    .find()
    .populate('user_type', 'name', null, {'user_type': 'Admin'})
    .exec(function(err, users) {
        res.send(users);
    });

由于

1 个答案:

答案 0 :(得分:1)

我看到两种可能性,要么您查询管理员的类型架构,要么使用返回的对象来查询这样的用户:

Type.findOne({name: 'Admin'}, function(err, type) {
    User.find({user_type: type._id}, function(err, users) {
        ...
    })
})

或者,如果您的类型架构中有对用户的引用,那么您不能简单地执行:

Type.findOne({name: 'Admin'}, function(err, type) {
    var users = type.user_type;
    ...
})

或者我读错了你的架构?