MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Stesso errore di campo nell'aggregazione _id

Non è il punto più chiaro documentato. Hai bisogno di una rappresentazione diversa dei Fields oggetto qui per definire correttamente la condizione di campo multiplo:

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")
);

Questo sta usando Fields.field definizione che ha un "nome" e un "target" in modo da essere interpretata correttamente. L'uso di stringhe semplici comporterà solo l'azione predefinita di rimuovere tutto fino all'ultimo "punto" nel nome del campo e, secondo il tuo errore, sono entrambi la stessa cosa. Specificando in questo modulo si dice al costruttore come si desidera che venga gestito correttamente.

Che fondamentalmente serializza il $group come:

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

Qual è quello che vuoi.