MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Conteggio errato dalla query di aggregazione

Il problema è che qui:

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

solo il secondo $split viene eseguito da MongoDB e restituisce hello\nworld come una stringa. Non esiste una tale sintassi "a cascata", poiché è semplicemente la stessa chiave JSON $split quindi vince l'ultimo.

Per risolvere il problema puoi utilizzare $reduce per applicare $split per spazio bianco su un array di diviso per \n valori:

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

Parco giochi Mongo