Das Problem ist das hier:
"sp": {
$split: [
"$sourceList.source",
"\n"
],
$split: [
"$sourceList.source",
" "
]
}
nur das zweite $split
wird von MongoDB ausgeführt und gibt hello\nworld
zurück als eine Saite. Es gibt keine solche „Kaskaden“-Syntax, da es sich einfach um denselben JSON-Schlüssel $split
handelt also der Letzte gewinnt.
Um dies zu beheben, können Sie $reduce um $split
anzuwenden durch Leerzeichen auf einem Array von aufgeteilt durch \n
Werte:
{
$project: {
"sp": {
$reduce: {
input: { $split: [ "$sourceList.source", "\n" ] },
initialValue: [],
in: { $concatArrays: [ "$$value", { $split: [ "$$this", " " ] } ] }
}
}
}
}