2

アルバムのコレクションがあります。アルバムの例:

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) を達成するにはどうすればよいですか 1) 特定のアルバムとトラックについて、たとえば名前でタスクを選択する必要があります (Album1 と track0 のすべての「someTask」)

2) 2 番目の問題は、完了していないタスクの最後のタスクを選択することです。

したがって、結果としての最初のクエリでは、次を取得する必要があります。

{
    name: 'album1'
    tracks: [{
        title: 'track0',
        language: 'en',
        processing: {
            tasks: [
               {name: 'someTask', started: '12/12/12' },
               {name: 'someTask', started: '12/10/12' },
            ]
        }
   ]
}

結果としての 2 番目のクエリでは、次を取得する必要があります。

{
    tracks: [{
        title: 'track0',
        language: 'en',
        processing: {
            tasks: [
                {name: 'someTask', started: '12/10/12' },
            ]
        }
   ]
}

そのため、基準を満たすタスクを 1 つだけ選択したいと考えています。次のような $elemMath でさまざまなバリアントを試しました。

tracks: {$elemMatch: {'processing.tasks': {$elemMatch:{name: 'someTask'}}}}

しかし、結果として、「someTask」という名前のタスクだけでなく、すべての processing.tasks を取得します。

2 つ目はより複雑で、アプローチ方法がわかりません。

4

0 に答える 0