MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Nombre incorrect de la requête d'agrégation

Le problème c'est qu'ici :

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

seulement le deuxième $split est exécuté par MongoDB et renvoie hello\nworld comme une chaîne. Il n'y a pas une telle syntaxe "en cascade", car il s'agit simplement de la même clé JSON $split donc le dernier gagne.

Pour résoudre ce problème, vous pouvez utiliser $reduce pour appliquer $split par espace sur un tableau de split by \n valeurs :

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

Mongo Playground