sql >> Base de Datos >  >> NoSQL >> MongoDB

Mismo error de campo en la agregación _id

No es el punto documentado más claro. Necesita una representación diferente de los Fields objeto aquí para definir su condición de campo múltiple correctamente:

Aggregation aggregation = newAggregation(
    match(criteria),
    unwind("kademeler"),
    match(criteria),
    group(
        Fields.from(
            Fields.field("name1", "kademeler.isemirleri.isemriKaynagi.name"),
            Fields.field("name2", "kademeler.isemirleri.isemriSebebi.name")
        )).count().as("etkilenenAboneSayisi")
);

Eso está usando el Fields.field definición que tiene un "nombre" y un "objetivo" para que se interprete correctamente. El uso de cadenas simples solo dará como resultado la acción predeterminada de eliminar todo hasta el último "punto" en el nombre del campo, y según su error, ambos son lo mismo. Especificar en este formulario le dice al constructor cómo desea que se maneje correctamente.

Que básicamente serializa el $group como:

{ "$group": {
    "_id": {
        "name1": "$kademeler.isemirleri.isemriKaynagi.name",
        "name2": "$kademeler.isemirleri.isemriSebebi.name"
    },
    "etkilenenAboneSayisi": { "$sum": 1 }
}}

Que es lo que quieres.