sql >> Databasteknik >  >> NoSQL >> MongoDB

Samma fältfel i aggregering _id

Inte den tydligaste dokumenterade punkten. Du behöver en annan representation av Fields objekt här för att definiera ditt villkor för flera fält korrekt:

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

Det är att använda Fields.field definition som har ett "namn" och ett "mål" så att den tolkas rätt. Att använda vanliga strängar kommer bara att resultera i standardåtgärden att ta bort allt tills den sista "punkten" i fältnamnet, och enligt ditt fel är båda samma sak. Att specificera i detta formulär talar om för byggaren hur du vill att det ska hanteras korrekt.

Vilket i princip serialiserar $group som:

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

Vilket är vad du vill.




  1. Itererar genom en rad strängar, hämtade från MongoDB

  2. mer än ett 2dsphere-index, inte säker på vilket geoNear ska köras

  3. MeteorJS MongoDB distributionsfel

  4. Är redis på Heroku möjligt utan ett tillägg?