我有一个专辑的集合,专辑的例子:
var album = {
name: 'album1',
tracks: [{
title: 'track0',
language: 'en',
processing: {
tasks: [
{name: 'someTask', started: '12/12/12' },
{name: 'someTask', started: '12/10/12' },
{name: 'anotherTask', started: '12/12/10', finished: '12/12/10' }
]
}
},{
title: 'track1',
language: 'en',
},{
title: 'track2',
language: 'es',
}]
}
如何实现以下 1) 对于特定专辑和曲目我需要按名称选择任务,例如(Album1 和 track0 的所有 'someTask')
2)第二个问题是在未完成的任务中选择最后一个任务。
因此,对于第一个查询,我需要得到:
{
name: 'album1'
tracks: [{
title: 'track0',
language: 'en',
processing: {
tasks: [
{name: 'someTask', started: '12/12/12' },
{name: 'someTask', started: '12/10/12' },
]
}
]
}
对于第二个查询,我需要得到:
{
tracks: [{
title: 'track0',
language: 'en',
processing: {
tasks: [
{name: 'someTask', started: '12/10/12' },
]
}
]
}
所以我只想选择一个满足条件的任务。我用 $elemMath 尝试了不同的变量,例如:
tracks: {$elemMatch: {'processing.tasks': {$elemMatch:{name: 'someTask'}}}}
但在结果中,我得到了所有 processing.tasks,而不仅仅是名为“someTask”的任务。
第二个比较复杂,我不知道如何处理它。