How can I merge, sort and do summation of array item values within the list results

Hi CouchBase Gurus,

Need some help. How can I merge, sort and do summation of array item values within the list results.

Here’s the array of documents:

[
{
    "contact": "contact::45”,
    "createdAt": "2020-01-18",
    "digitalAssetSharedItems": [
      {
        "digitalAsset": “01”,
        "lastViewedAt": "2021-01-18",
        "views": 2
      },
      {
        "digitalAsset": "02",
        "lastViewedAt": "2021-01-18",
        "views": 1
      },
    ]
  },
{
    "contact": "contact::45",
    "createdAt": "2020-03-18",
    "digitalAssetSharedItems": [
      {
        "digitalAsset": "01",
        "lastViewedAt": "2020-06-18",
        "views": 5
      },
      {
        "digitalAsset": “02”,
        "lastViewedAt": "2021-01-18",
        "views": 3
      },
      {
        "digitalAsset": “04”,
        "lastViewedAt": "2021-01-18",
        "views": 13
      }
    ]
  },
]

Here is the result I want to achieve:

  • merged with same id “digitalAsset”
  • sum up: “views” value
  • and Group By contacts
  • I want to put the createdAt value on their specific document
[
  "contact": "contact::45”,
  "digitalAssetSharedItems": [
      {
       "createdAt": "2020-01-18",
        "digitalAsset": “01”,
        "lastViewedAt": "2021-01-18",
        "views": 7
      },
      {
        "createdAt": "2020-01-18",
        "digitalAsset": “02”,
        "lastViewedAt": "2021-01-18",
        "views": 4
      },
      {
       "createdAt": "2020-03-18",
        "digitalAsset": “04”,
        "lastViewedAt": "2021-01-18",
        "views": 13
      }
    ]
]

Here’s my partial query:

SELECT
 das.contact,
 ARRAY_FLATTEN(ARRAY_AGG(das.digitalAssetSharedItems), 2) AS digitalAssetSharedItems
FROM `bluebonnet` AS das
WHERE `type` = 'digital-asset-shared'
AND tenant = 'tenant::01'
AND contact = "contact::45"
GROUP BY das.contact

But I’ve have no log on this.

Need your help guys