我是Mongodb的新手,我正在尝试编写一个复杂的查询。 非常感谢您的帮助:-) 我有这个模式(删除大部分不必要的属性后):
var Track = Schema({
channels: [Channel],
})
var Channel = Schema({
revisions: [Revision]
});
var Revision = Schema({
owner: { type: Schema.Types.ObjectId, ref: 'user' },
revision: { type: Number, min: 0 },
deleted: Boolean
})

每首曲目都有很多频道。每个频道都可以在许多版本中找到(更改后保存1,保存2,更改后保存3等)。 可以在修订版x中删除通道,但可以在以后的修订版(x + y)中恢复。
我想选择所有音轨的参与者(所有拥有有效频道的频道所有者)。 由于频道可以进行多次修改,因此活动频道将被视为在其上次修订中未删除的频道。 我想将结果区分为一组用户。不同通道之间每个通道的最后修订版本可能不同,但它们都比track.last版本小。
对于以下示例,查询将返回[" dima",' jhone']
tracks collection
{
channels: {
{
_id: 0
revisions: [
{
owner: 'tal',
revision: 0,
deleted: false
},{
owner: 'tal',
revision: 1,
deleted: true
}
]
}, {
_id: 1
revisions: [
{
owner: 'dima',
revision: 0,
deleted: false
}
]
}, {
_id: 2
revisions: [
{
owner: 'Jhone',
revision: 0,
deleted: false
},{
owner: 'Jhone',
revision: 1,
deleted: true
},{
owner: 'Jhone',
revision: 2,
deleted: false
},
]
},{
_id: 3
revisions: [
{
owner: 'Jhone',
revision: 0,
deleted: false
},
]
}
}
}

任何帮助将不胜感激。