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()

我怎样才能得到我想要的?谢谢。

4

1 回答 1

0

您需要使用$elemMatch来检索地板。mongoosejs 文档在这里讨论它。

所以你可能会做类似的事情:

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

这应该只返回匹配的地板元素{"name": "fname"}

于 2013-04-17T20:15:29.153 回答