$ lookup结果使用另一个数组中的键排序

安妮塔·保罗

我有以下数据结构:

播放列表集合:

{
    _id:123,
    artistId:959789,
    title:'playlist1',
    tracks:[{trackId:123456,createdDate:03.02.2017},
        {trackId:213556,createdDate:04.02.2017},
        {trackId:956125,createdDate:05.02.2017}]
},
{
    _id:456,
    artistId:456456,
    title:'playlist2',
    tracks:[{trackId:956336,createdDate:03.02.2017},
        {trackId:213556,createdDate:09.02.2017},
        {trackId:785556,createdDate:011.02.2017}]
},
{
    _id:456,
    artistId:456456,
    title:'playlist3',
    tracks:[{trackId:636985,createdDate:01.02.2017},
        {trackId:456585,createdDate:06.02.2017},
        {trackId:785556,createdDate:09.02.2017}]
}

所述trackId播放列表的曲目阵列中是_id一个轨道的轨道集合中

曲目收集:

{_id:956336,title:'abc'},
{_id:785556,title:'cdf'},
{_id:456585,title:'ghi'},
{_id:213556,title:'xyz'},
{_id:636985,title:'lmn'}

我所做的是数组中$lookup使用的聚合trackIdtracks并且得到了结果。但是playlistTracks是以其他某种顺序排序的,而不是以tracks数组顺序的顺序排序。

{
        $match: {artistId: 456}
},
{
    $lookup: {
            from: 'tracks',
            localField: 'tracks.trackId',
            foreignField: '_id',
            as: 'playlistTracks'
        }
}, 

现在我需要的是让具有下列结构的特定艺术家播放列表的列表:本playlistTracks应在上的顺序排序createdDatetracks数组。

{
    _id:456,
    title:'playlist2',
    tracks:[{trackId:636985,createdDate:01.02.2017},
        {trackId:456585,createdDate:06.02.2017},
        {trackId:785556,createdDate:09.02.2017}]
    playlistTracks:[{_id:956336,title:'abc'},
            {_id:213556,title:'xyz'},
            {_id:785556,title:'cdf'}]
},
{
    _id:456,
    title:'playlist2',
    tracks:[{trackId:636985,createdDate:01.02.2017},
        {trackId:456585,createdDate:06.02.2017},
        {trackId:785556,createdDate:09.02.2017}]
    playlistTracks:[{_id:636985,title:'lmn'},
            {_id:456585,title:'ghi'},
            {_id:785556,title:'cdf'}]
}
M14

遵循以下步骤

1 unwind the tracks array in playlist collection
2 $lookup match with tracks collection
3 add createddate of tracks array to lookup result as a new key
4 sort based on new key
5 group the results for your requirements

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用比较器结果以错误的顺序对另一个数组(不同长度)的数组进行排序

用另一个数组中的元素替换几乎排序的数组中的元素

用Python中的另一个数组对数组的行进行排序

用Python中的另一个数组对数组的行进行排序

通过基于另一个数组的键对数组进行排序?

使用另一个数组中的值过滤一个数组

根据另一个数组的键对数组元素进行排序

在另一个数组中查找一个数组的键

PHP使用另一个数组中的值和键更新数组

使用相同的键将属性从一个数组添加到另一个数组中(javascript)

使用另一个数组中的值修改javascript forEach结果

使用另一个数组通过子数组键自定义对多维数组的排序

如何使用另一个数组中其他对象的键替换对象数组中的值

使用PHP,按键搜索一个数组,然后用匹配键中的值替换另一个数组中的值

根据另一个数组中的排序索引对数组重新排序

用PHP中的另一个数组键替换一个数组键

根据另一个数组中定义的排序顺序对数组进行排序

将一个数组(键)中的对象数组变成另一个数组(值)

如何根据Java中另一个数组的值对一个数组进行排序?

使用数组对对象进行排序并将值存储在另一个数组中

根据数组键顺序对另一个数组内的数组进行排序

对一个数组进行排序比较 PHP 中的另一个数组

根据另一个数组中的顺序对数组数组进行排序

使用一个数组中的值作为键从另一个数组中查找匹配项

对 ReactJs 中另一个数组中的数组进行排序

使用比较器无法根据另一个数组对一个数组进行排序

根据存储在另一个数组中的键获取数组中的元素

在 Python 中根据另一个数组的顺序对一个数组进行排序

排序到另一个数组