Tengo la colección de autos en firebase con el siguiente formato y ejemplos:
{ { make: BMW, model: X7, color: white }, { make: BMW, model: X7, color: white }, { make: BMW, model: X7, color: black }, { make: Audi, model: Q7, color: gray } }Lo que me gustaría recibir de mi consulta es algo como esto:
[ { make: BMW, model: X7, colors: [white, black] }, { make: Audi, model: Q7, colors: [gray] } ]No tiene que ser exactamente en este formato, pero espero haber dejado claro mi propósito. ¿Cómo puedo lograr esto de manera eficiente usando firebase?
Captura de pantalla de Firestore 
Mi código para recibir todos los documentos:
const admin = require('firebase-admin') const db = admin.firestore() module.exports.getVehicles = async (data, context) => { const vehiclesQuery = db.collection('vehicles').get() const vehicles = [] vehiclesQuery.forEach(doc => { vehicles.push(doc.data()) }) return vehicles }No hay ninguna forma directa de obtener datos en ese formato. Tendría que modificar los datos usando Javascript después de obtener todos los documentos. También te falta la instrucción await before get() :
module.exports.getVehicles = async (data, context) => { const vehiclesQuery = await db.collection('vehicles').get() const res = {} vehiclesQuery.docs.forEach(doc => { const { color, make, model } = doc if (!res[make+'-'+model]) { res[make+'-'+model] = [color] } else { res[make+'-'+model].push(color) } }) const vehicles = [] Object.entries(res).forEach((v) => { const [make, model] = v[0].split('-') vehicles.push({make, model, colors: v[1]}) }) console.log(vehicles) return vehicles }