MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Même erreur de champ dans l'agrégation _id

Pas le point documenté le plus clair. Vous avez besoin d'une représentation différente des Fields objet ici pour définir correctement votre condition de champs multiples :

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

Cela utilise le Fields.field définition qui a un "nom" et une "cible" afin qu'elle soit interprétée correctement. L'utilisation de chaînes simples entraînera simplement l'action par défaut de tout supprimer jusqu'au dernier "point" dans le nom du champ, et selon votre erreur, ce sont les deux la même chose. Spécifier dans ce formulaire indique au constructeur comment vous souhaitez qu'il soit correctement géré.

Qui sérialise essentiellement le $group comme :

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

C'est ce que vous voulez.