Problemet er, at her:
"sp": {
$split: [
"$sourceList.source",
"\n"
],
$split: [
"$sourceList.source",
" "
]
}
kun den anden $split bliver eksekveret af MongoDB, og det returnerer hello\nworld som én streng. Der er ingen sådan "kaskade"-syntaks, da det simpelthen er den samme JSON-nøgle $split så sidste vinder.
For at rette op på det kan du bruge $reduce for at anvende $split med mellemrum på en række opdelt med \n værdier:
{
$project: {
"sp": {
$reduce: {
input: { $split: [ "$sourceList.source", "\n" ] },
initialValue: [],
in: { $concatArrays: [ "$$value", { $split: [ "$$this", " " ] } ] }
}
}
}
}