tengo esta estructura, en ella hay un objeto json y ese objeto tiene una matriz de objetos json
necesito preguntarles si color1 es rojo por ejemplo por cierto
name:carla data: { sign: "carly", tools: [{trait:color1, value:red}, {trait:color2, value:white}] } }, name:dany data: { sign: "dan", tools: [{trait:color1, value:blue}, {trait:color2, value:black}] }entonces quiero que solo los elementos tengan el color 1 rojo, en este caso solo debo obtener el primer elemento
lo intenté con esto
query = query.where('data.tools', "array-contains", {trait: 'color1', value: 'red'})Su consulta obtiene documentos donde data.tools contiene ese objeto. No filtra esa matriz. Deberá analizar ese objeto usted mismo después de obtener los documentos:
const qSnap = await query.get(); qSnap.docs.forEach((doc) => { const item = doc.data().data.tools.find(t => t.trait === 'color1' && t.value == 'red'); console.log(item) })Si está tratando de encontrar una herramienta específica en un documento, puede crear una subcolección de herramientas. De esa manera, puede consultar uno específico y también actualizarlo directamente si es necesario.