Android Firestore quering valor particular en la matriz de objetos

Gowtham KK:

Este es mi estructura de la base de datos FireStore.

Resultado esperado: Para obtener todos los puestos de trabajo, en donde en la matriz de la experiencia, el valor Lang es "Swift".

De manera que por este que debería obtener primeros 2 documentos. 3er documento no tiene experiencia "Swift".

Query jobs = db.collection("Jobs").whereArrayContains("experience.lang","Swift");
jobs.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
            @Override
            public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
               //Always the queryDocumentSnapshots size is 0
            }
        });

Probado la mayoría de las respuestas, pero ninguno funcionó. ¿Hay alguna forma de consulta de datos en esta estructura? Los documentos sólo está disponible para array normales . No disponible para la gama de objeto personalizado.

Doug Stevenson:

Con la estructura de su documento actual, no es posible llevar a cabo la consulta que desea. Firestore que no acepta peticiones para campos individuales de los objetos en los campos de lista.

Lo que tendría que hacer es crear un campo adicional en el documento y que es consultable. Por ejemplo, se podría crear un campo de lista con solamente la lista de idiomas de cadena que forman parte del documento. Con esto, se podía utilizar una matriz contiene consulta para encontrar los documentos en los que una lengua se menciona al menos una vez.

Por el documento se muestra en la captura de pantalla, que tendría un campo de lista denominada "lenguajes" con los valores [ "Swift", "Kotlin"].

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=404490&siteId=1
Recomendado
Clasificación