MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Contagem incorreta da consulta de agregação


O problema é que aqui:
"sp": {
    $split: [
        "$sourceList.source",
        "\n"
    ],
    $split: [
        "$sourceList.source",
        " "
    ]
}

apenas o segundo $split é executado pelo MongoDB e retorna hello\nworld como uma corda. Não existe essa sintaxe "em cascata", pois é simplesmente a mesma chave JSON $split então as últimas vitórias.

Para corrigir isso, você pode usar $reduce para aplicar $split por espaço em branco em uma matriz de divisão por \n valores:
{
    $project: {
        "sp": {
            $reduce: {
                input: { $split: [ "$sourceList.source", "\n" ] },
                initialValue: [],
                in: { $concatArrays: [ "$$value", { $split: [ "$$this", " " ] } ] }
            }
        }
    }
}

Mongo Playground