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", " " ] } ] }
}
}
}
}