我正在使用mongodb v.2.6.11和mongoose。
我有两个具有OneToMany关系的模型。在我的父级TypeA(简称TA)中,我没有对子级的引用。在我的子级TypeB(简称TB)中,我有一个对父级的id引用。
示例模式:
var TASchema = {
name: {type: String, required: "TASchema.name is required", index: {unique: true, dropDups: true}}
};
var TBSchema = {
start: {type: Number, required: "TBSchema.language is required"},
stop: {type: Number, required: "TBSchema.stop is required"},
TA: {type: Schema.Types.ObjectId, ref: 'tbschema'},
}
我想做的事情:选择在“ts_start”和“ts_stop”这两个变量(它们是时间戳)的时间段内具有“start”变量的所有TB。所以类似于:start : {$gte: ts_min, $lte : ts_max}
。
示例输出:
[
{
name: "Ta object 1",
tbs: [{start : 1, stop2}, {start: 2, stop: 3}]
},
{
name: "Ta object 2",
tbs: [{start : 1, stop2}, {start: 2, stop: 3}]
}
]
我想保留查询返回TA数组的结构,其中每个TA包含TB数组的结构。但是我不能使用populate,因为TA没有任何对子对象的引用(因为作为子文档保存的数量可能太多)。那么这怎样才能实现呢?我想错了吗?或者我应该怎么做才能像示例输出中一样输出指定的查询结果?