Estoy usando selección múltiple en uno de mis parámetros y me gustaría saber cómo consultar esos parámetros como, por ejemplo, si
Quiero consultar parámetros que tiene 1 (no importa si hay otros valores)
El valor uno tiene: 1, 2, 3 El valor dos tiene: 5, 1, 6 El valor tres tiene: 5, 6, 9
Solo debe traer Valor uno y dos
Sé que puedes hacer algo como (para valores que no son de matriz):
const librosRef = db.collection('libros'); const queryRef = librosRef.where('grado', '==', '4° Grado'); y traería todos los documentos de esa colección que tiene 4° Grado pero si trato de hacer eso usando una multiselección no trae nada.
Esto es lo que estoy intentando (no funciona para la matriz, que es lo que estoy tratando de averiguar):
const productosRef = db.collection('productosAIB'); const queryRef = productosRef.where('grado', '==', '4° Grado'); useEffect(() => { queryRef.orderBy("precio") .get() .then((snapshot) => { const tempData = []; snapshot.forEach((doc) => { const data = doc.data(); tempData.push(data); }); setProductos(tempData); }); }, []);Ejemplo de cómo se almacena en Firebase:
Y así se ve en la tabla (sin la consulta porque si agrego la consulta no muestra nada)
Parece que está intentando consultar documentos en función de la existencia de un valor en una matriz. Estas se denominan consultas de membresía de matriz en Firestore.
Para esto, usaría array-contains para hacer coincidir un solo campo en una matriz, y array-contains-any para hacer coincidir cualquier valor de una matriz.
Para consultar en función de un valor único en la matriz
const queryRef = productosRef.where('grado', 'array-contains', '4° Grado');múltiples valores pasados como una matriz
const queryRef = productosRef.where('grado', 'array-contains-any', ['4° Grado', 'next array element']);NOTA: array-contains-any puede admitir hasta 10 valores de comparación.
Para obtener más información sobre las consultas de membresía de matriz, puede ver la documentación aquí