MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mesmo erro de campo na agregação _id


Não é o ponto documentado mais claro. Você precisa de uma representação diferente dos Fields object aqui para definir sua condição de campo múltiplo corretamente:
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")
);

Isso está usando o Fields.field definição que tem um "nome" e um "destino" para que seja interpretado corretamente. O uso de strings simples resultará apenas na ação padrão de remover tudo até o último "ponto" no nome do campo e, de acordo com seu erro, ambos são a mesma coisa. Especificar neste formulário informa ao construtor como você deseja que ele seja tratado adequadamente.

Que basicamente serializa o $group Como:
{ "$group": {
    "_id": {
        "name1": "$kademeler.isemirleri.isemriKaynagi.name",
        "name2": "$kademeler.isemirleri.isemriSebebi.name"
    },
    "etkilenenAboneSayisi": { "$sum": 1 }
}}

Que é o que você quer.