2013-04-17 28 views
0

我正在開發一個程序與2個模型,建築物和地板。模式定義如下。在這兩個文件貓鼬中發現嵌入式文件的條件

var BuildingSchema = new Schema({ 
    block:{type:String,trim:true}, 
    project_id:{type:String}, 
    floors:[{type:Schema.Types.ObjectId,ref:'Floor'}] 
}) 

var FloorSchema = new Schema({ 
    name:{type:String,trim:true}, 
    building_id:{type:String,ref:'Building'} 
} 

我想要做的是找到floor.name和building.project_id條件的地板結果。我已經試過但沒有工作

floor.find({name:'fname','building_id.project_id':123}).exec() 

我如何得到我想要的?謝謝。

+0

您build_id是一個字符串,但你正在尋找一些地板元件。你想要「123」嗎? –

回答

0

您需要利用$elemMatch才能找回地板。 mongoosejs文檔討論它here

所以,你可能做這樣的事情:

building.find({"project_id": 123}).where("floors").elemMatch(function(elem){ 
    elem.match("name", "fname"); 
}); 

這應該只返回匹配{"name": "fname"}

+0

感謝您的回答。但是,我試過並得到了空的結果。 –