具有过滤器组和不同

时间:2017-02-15 13:19:59

标签: mongodb

我是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
				},
			]
		}
	}

}




任何帮助将不胜感激。

0 个答案:

没有答案