Dynamic property for object in N1QL query

Hello! I’d like to have the keys for an object being set dynamically, so I have faster access to those objects. For example, changing the following query:

SELECT SUM(someProp1) as mySum1, SUM(someProp2) as mySum2
FROM default
GROUP BY docId

I’d like to obtain the following result:

{
  docId1: {
    mySum1: 1,
    mySum2: 1  
  },
  docId2: {
    mySum1: 0,
    mySum2: 3  
  }
  ...
}

Is this possible with Couchbase? Thanks!

1 Like

Yes.

SELECT RAW OBJECT v.docId:{v.mySum1,v.mySum2} FOR v IN (SELECT docId, SUM(someProp1) mySum1, SUM(someProp2) mySum2 FROM default GROUP BY docId) END;

If this gives syntax error for older versions of CB use the following.

SELECT RAW OBJECT v.docId:{"mySum1":v.mySum1, "mySum2":v.mySum2} FOR v IN (SELECT docId, SUM(someProp1) mySum1, SUM(someProp2) mySum2 FROM default GROUP BY docId) END;

1 Like