合并子数组并排序

问题描述

我有 ReQL 查询

r.table('production_plan')
  .filter(doc => doc.hasFields('messages'))
  .pluck('id','nomer','diameter',{'messages': ['date','text','username']})

结果

    {
        "diameter": 160,"id": "29aefc95-c701-49ee-abc1-2e1e275abb30","messages": [{
            "date": Fri Jun 25 2021 09:06:47 GMT+00:00,"text": "test","username": "John"
        }],"nomer": "0038"
    },{
        "diameter": 110,"id": "e8176c1b-5582-4ab2-80cb-9830de7a4c6b","messages": [{
                "date": Thu Jun 24 2021 12:34:19 GMT+00:00,"text": "123","username": "John"
            },{
                "date": Thu Jun 24 2021 12:36:10 GMT+00:00,"text": "456","username": "Jack"
            },{
                "date": Thu Jun 24 2021 12:36:42 GMT+00:00,"text": "test1",{
                "date": Thu Jun 24 2021 12:37:01 GMT+00:00,"text": "test2 ?","username": "John"
            }
        ],"nomer": "0003"
    }

我想选择按日期排序的最后一次按摩

    {
        "messages": [
            {
                "date": Fri Jun 25 2021 09:06:47 GMT+00:00,"username": "John","diameter": 160,"nomer": "0038"              
            },{
                "date": Thu Jun 24 2021 12:34:19 GMT+00:00,"diameter": 110,"nomer": "0003"              
            },"username": "Jack"

                "diameter": 110,"nomer": "0003"               
            },"username": "John"

                "diameter": 110,"nomer": "0003"             
            }
        ],}

解决方法

通过幼稚的方式解决

r.table('production_plan')
  .filter(doc => doc.hasFields('messages'))
  .pluck('id','nomer','diameter',{'messages': ['date','text','username']})
  .concatMap(v => v('messages').map(msg => ({
    date : msg('date'),text : msg('text'),username : msg('username'),id : v('id'),nomer : v('nomer'),diameter : v('diameter')
  })))   
  .orderBy(r.desc('date'))