Problem polega na tym, że tutaj:
"sp": {
$split: [
"$sourceList.source",
"\n"
],
$split: [
"$sourceList.source",
" "
]
}
tylko drugi $split
zostaje wykonany przez MongoDB i zwraca hello\nworld
jako jeden ciąg. Nie ma takiej „kaskadowej” składni, ponieważ jest to po prostu ten sam klucz JSON $split
więc ostatnie wygrywa.
Aby to naprawić, możesz użyć $reduce zastosować $split
przez białe znaki na tablicy podzielonej według \n
wartości:
{
$project: {
"sp": {
$reduce: {
input: { $split: [ "$sourceList.source", "\n" ] },
initialValue: [],
in: { $concatArrays: [ "$$value", { $split: [ "$$this", " " ] } ] }
}
}
}
}