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

Falsche Zählung aus Aggregationsabfrage

Das Problem ist das hier:

"sp": {
    $split: [
        "$sourceList.source",
        "\n"
    ],
    $split: [
        "$sourceList.source",
        " "
    ]
}

nur das zweite $split wird von MongoDB ausgeführt und gibt hello\nworld zurück als eine Saite. Es gibt keine solche „Kaskaden“-Syntax, da es sich einfach um denselben JSON-Schlüssel $split handelt also der Letzte gewinnt.

Um dies zu beheben, können Sie $reduce um $split anzuwenden durch Leerzeichen auf einem Array von aufgeteilt durch \n Werte:

{
    $project: {
        "sp": {
            $reduce: {
                input: { $split: [ "$sourceList.source", "\n" ] },
                initialValue: [],
                in: { $concatArrays: [ "$$value", { $split: [ "$$this", " " ] } ] }
            }
        }
    }
}

Mongo-Spielplatz