DEFINITION
I have connected my cube js backend to mongodb. I am storing documents inside my mongo db database in a following way.
THIS IS HOW MY DOCUMENT LOOKS LIKE IN MONGO DB
{
anonymousId: "bdee014b-09e1-4d79-bcf1-c3cc91cd4101"
user: "abc"
url: "/index"
eventType: "pageView"
date: "22-08-2020"
time: "20:33:9"
data: "some data"
}
So now let us assume that I have 10 documents in my mongodb collection in which 5 documents belong to user: "abc" and 5 documents belong to user: "xyz".
HOW I GET THE DATA RIGHT NOW IN THE BROWSER CONSOLE IS SHOWN BELOW
{
annotation: {measures: {,…},…}
data: [{Events.user: "xyz",…}, {Events.user: "xyz",…}, {Events.user: "xyz",…},…]
0: {Events.user: "xyz",…}
1: {Events.user: "xyz",…}
2: {Events.user: "xyz",…}
3: {Events.user: "abc",…}
4: {Events.user: "abc",…}
5: {Events.user: "xyz",…}
lastRefreshTime: "2020-08-22T15:23:53.547Z"
query: {measures: ["Events.pageView", "Events.buttonClick"], dimensions: ["Events.user",
"Events.allData"],…}
refreshKeyValues: [[{unix_timestamp(): 1598109833}]]
usedPreAggregations: {}
}
Here you can see in the data array that i get back as a response from the cube js backend has 6 objects in 4 of them belong to user XYZ and 2 of them belong to ABC.
MY CUBE.JS SCHEMA
cube(`Events`, {
sql: `SELECT * FROM test.events`,
refreshKey: {
sql: `SELECT UNIX_TIMESTAMP()`
},
measures: {
count: {
type: `count`
},
pageView: {
type: `count`,
filters: [
{ sql: `${eventType} = 'pageView'` }
]
},
buttonClick: {
type: `count`,
filters: [
{ sql: `${eventType} = 'buttonClicked'` }
]
}
},
dimensions: {
anonymousId: {
sql: `anonymousId`,
type: `string`
},
url: {
sql: `url`,
type: `string`
},
user: {
sql: `user`,
type: `string`
},
allData: {
sql: `data`,
type: `string`
},
eventType: {
sql: `eventType`,
type: `string`
},
referrer: {
sql: `referrer`,
type: `string`
},
}
});
QUESTION
How can i segregate or we can say group data depending upon the user. What i mean is that i want the data to return two arrays for two different users. Lets say if xyz has 2 documents an array of 2 documents for that very user should be returned and abc has 4 documents an array of 4 documents should be returned.
They should not be returned combined. abc's data should be returned seperately and xyz's data should be returned seperately.
2 USERS SHOULD MAINTAIN 2 DIFFERENT ARRAYS
EXPECTATION
A trick or a way by which we write the schema in achieving this behavior,