2012-05-10 103 views
0

在貓鼬我有兩個模式,它使用的是貓鼬populate鏈接與指定的ID文件:貓鼬:搜索填充的文檔中

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中,這裏只是一個簡單的例子。

在此先感謝!

最好的問候, 烏利

回答

0

我想你已經錯過了.populate

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

謝謝,我莫名其妙地混合了一些ID的,上面的查詢現在工作爲好。我只需要上面的信息,因此不需要填充主機。感謝您的回答! – Uli