sql >> Base de Datos >  >> NoSQL >> MongoDB

Recuento incorrecto de la consulta de agregación

El problema es que aquí:

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

solo el segundo $split es ejecutado por MongoDB y devuelve hello\nworld como una cuerda. No existe tal sintaxis de "cascada", ya que es simplemente la misma clave JSON $split así que el último gana.

Para solucionarlo, puede usar $reduce para aplicar $split por espacios en blanco en una matriz de división por \n valores:

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

Patio de juegos Mongo