MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Gleicher Feldfehler in Aggregation _id

Nicht der klarste dokumentierte Punkt. Sie benötigen eine andere Darstellung der Fields Objekt hier, um Ihre Mehrfeldbedingung richtig zu definieren:

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

Das verwendet das Fields.field Definition, die einen "Namen" und ein "Ziel" hat, damit sie richtig interpretiert wird. Die Verwendung von einfachen Zeichenfolgen führt nur dazu, dass alles bis zum letzten "Punkt" im Feldnamen entfernt wird, und gemäß Ihrem Fehler sind beide dasselbe. Die Angabe in diesem Formular teilt dem Bauherrn mit, wie es ordnungsgemäß gehandhabt werden soll.

Was im Grunde die $group serialisiert als:

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

Was Sie wollen.