在两个文件中找到有条件的嵌入式文件

时间:2013-04-17 19:25:36

标签: node.js mongodb mongoose

我正在开发一个包含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()

我如何得到我想要的东西?谢谢。

1 个答案:

答案 0 :(得分:0)

您需要使用$elemMatch来检索地板。 mongoosejs文档谈论它here

所以你可以这样做:

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

这应该只返回匹配{"name": "fname"}

的floor元素