我正在开发一个包含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 :(得分:0)
您需要使用$elemMatch来检索地板。 mongoosejs文档谈论它here。
所以你可以这样做:
building.find({"project_id": 123}).where("floors").elemMatch(function(elem){
elem.match("name", "fname");
});
这应该只返回匹配{"name": "fname"}