Crear consultas dinámicas con la Primavera de Datos MongoDB Criterios

Me gustaría correr una masiva operación de eliminación en una lista de documentos en MongoDB que han sido seleccionados por el usuario en la interfaz de usuario por lo que necesito para construir dinámicamente una consulta que tiene el siguiente aspecto (el o la cláusula se expande por cada documento seleccionado):

{
    $and: [
        {
            "contentType": "application/vnd.sometype"
        },
        {
            $or: [
                {
                    "metadata.name": "someName",
                    "metadata.version": "someVersion"
                },
                {
                    "metadata.name": "someOtherName",
                    "metadata.version": "someOtherVersion"
                }
            ]
        }
    ]
},
Fields: null,
Sort: null

Justo ahora estoy usando la concatenación de cadenas para lograr esto.

Es posible construir esta consulta con la Primavera de Datos MongoDB Criterios Generador (org.springframework.de datos.mongodb.núcleo.consulta.Criterios)?

InformationsquelleAutor Jamie Cramb | 2014-07-03

1 Kommentar

  1. 10

    No este trabajo para usted?

    Criteria criteria = Criteria.where("contentType").is("application/vnd.sometype");
    
    List<Criteria> docCriterias = new ArrayList<Criteria>(docs.size());
    
    for (Document doc: docs) {
        docCriterias.add(Criteria.where("metadata.name").is(doc.getName())
                                   .and("metadata.version").is(doc.getVersion()));
    }
    
    criteria = criteria.orOperator(docCriterias.toArray(new Criteria[docs.size()]));

    ?

    • sí, este funciona perfectamente, gracias!
    • Bilan criterios.orOperator(docCriterias.toArray(nuevos Criterios[docs.size()])); im que consigue problema, mientras que la conversión de mi lista de Criterios para una Matriz de sus sigo diciendo que orOperator no se define por Criterios[]? puede usted plese ayuda?
    • Por favor, comprueba la Primavera de Datos MongoDB versión. Trate de usar la última versión de uno.
    • Estoy usando 1.5.0.LIBERACIÓN
    • su sigan diciendo que El método orOperator(Criterios…) en el tipo de Criterio no es aplicable para los argumentos (Criterios[])
    • No utilizar org.hibernate.Criteria por error?
    • Bueno, feria, por favor, el StackTrace
    • Permítanos continuar esta discusión en el chat.
    • ¿Qué va a ser del orden de ejecución de múltiples criterios ?
    • Cómo imprimir este criterio? Quiero ver la consulta real.
    • Ver Criteria.getCriteriaObject().toString(), donde la última hace exactamente esto: JSON.serialize(this);

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea