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