Aggregate_Session
Purpose
The Aggregate_Session collection stores aggregated daily metrics for a brand and a service (e.g., WEB VTO).
It provides overall analytics such as engagement time, session duration, user counts, and device distribution.
The subcollection glassesAnalytics contains detailed breakdowns for glasses and variants.
Document schema
{
"averageSessionsPerUser": "number",
"avgEngagementTime": {
"minutes": "number",
"seconds": "number"
},
"avgSessionTime": {
"minutes": "number",
"seconds": "number"
},
"brand": "string",
"date": "string",
"deviceData": [
{
"count": "number",
"type": "string",
"uniqueDevices": "number"
}
],
"lineArray": [
{
"averageEngagementTime": "number",
"averageSessionTime": "number",
"averageSessionsPerUser": "number",
"lineRef": "string",
"newUsersCount": "number",
"nome_linea": "string",
"numberOfSessions": "number",
"numberOfUniqueUsers": "number",
"time": "number",
"visualization": "number"
}
],
"newUsersCount": "number",
"service": "string",
"totalSessions": "number",
"totalUniqueUsers": "number"
}
Subcollection: glassesAnalytics
The glassesAnalytics subcollection stores detailed analytics for glasses and variants..
Document schema
{
"glassesArray": [
{
"glassesRef": "string",
"lineRef": "string",
"nome_occhiale": "string",
"averageEngagementTime": "number",
"averageSessionTime": "number",
"averageSessionsPerUser": "number",
"newUsersCount": "number",
"numberOfSessions": "number",
"numberOfUniqueUsers": "number",
"time": "number",
"visualization": "number"
}
],
"variantsArray": [
{
"modelRef": "string",
"glassesRef": "string",
"lineRef": "string",
"tagliaRef": "string",
"esaColorFramePrimary": "string",
"esaColorFrameSecondary": "string",
"esaColorLensesPrimary": "string",
"esaColorLensesSecondary": "string",
"averageEngagementTime": "number",
"averageSessionTime": "number",
"averageSessionsPerUser": "number",
"newUsersCount": "number",
"numberOfSessions": "number",
"numberOfUniqueUsers": "number",
"time": "number",
"visualization": "number"
}
]
}
Indexes
- brand is a reference to the
Brandcollection; - lineArray.lineRef is a
referenceto theLineacollection; - In glassesAnalytics subcollection:
- glassesArray is a
[]of objects ofreferences; - glassesArray.glassesRef is a
referenceof theOcchialecollection; - glassesArray.lineRef is a
referenceof theLineacollection; - variantsArray is a
[]of objects ofreferences; - variantsArray.modelRef is a
referenceof theModellocollection; - variantsArray.tagliaRef is a
referenceof theTagliacollection; - variantsArray.lineRef is a
referenceof theLineacollection.
- glassesArray is a
Query examples
// Fetch the Reference Doc from Firebase
const aggregateSessionRefDoc = doc(db, "Aggregate_Session", aggregateSessionId);
const aggregateSessionRefSnap = await getDoc(aggregateSessionRefDoc);
// Query sessions by brand
const sessionsByBrand = query(
collection(db, "Aggregate_Session"),
where("brand", "==", brandId)
);
// Get product-level analytics
const glassesAnalyticsRef = collection(
db,
"Aggregate_Session",
aggregateSessionsId,
"glassesAnalytics"
);
// Query analytics by product reference
const analyticsByGlasses = query(
glassesAnalyticsRef,
where("glassesArray.glassesRef", "==", glassesId)
);
// Query analytics by variant reference
const analyticsByVariant = query(
glassesAnalyticsRef,
where("variantsArray.modelRef", "==", variantId)
);