Mongoose:在填充的文档中搜索具有指定ID的文档

时间:2012-05-10 16:36:07

标签: node.js search document mongoose populate

在Mongoose我有两个模式,使用Mongoose populate链接:

var SystemSchema = new Schema({
    name                    : {type : String, trim : true}
    , hosts                 : [{ type: ObjectId, ref: 'Host' }]
});

var HostSchema = new Schema({
    name                    : {type : String, trim : true}
});

我的问题:我有一个主机的给定ObjectId,现在想知道哪些系统确实有对该主机的引用。

我这样做是因为我通常只访问SystemsSchema并希望填充主机,但有人问我是否可以检查主机系统。现在我试图简单地搜索,而不是从主机到系统填充,但我有点卡住了。

我的一个尝试是搜索到哪里,但这没有成功:

System.where('hosts').in(['4fabca804c9d76ac0b000022']).run(function(err, hosts) {
        console.log(hosts);
    });

有没有办法像这样搜索?请不要告诉我只是将HostSchema作为子文档放到SystemSchema中,这只是一个简化的例子。

提前致谢!

最诚挚的问候, 乌利

1 个答案:

答案 0 :(得分:0)

我认为你错过了.populate

 System
    .find({ hosts : '4fabca804c9d76ac0b000022' })
    .populate('hosts')
    .run(function(err, systems) {
         console.log(systems);
    });