Проблемът е, че тук:
"sp": {
$split: [
"$sourceList.source",
"\n"
],
$split: [
"$sourceList.source",
" "
]
}
само вторият $split
се изпълнява от MongoDB и връща hello\nworld
като една струна. Няма такъв "каскаден" синтаксис, тъй като това е просто същия JSON ключ $split
така че последният печели.
За да коригирате това, можете да използвате $reduce за да приложите $split
чрез празно пространство върху масив от разделяне на \n
стойности:
{
$project: {
"sp": {
$reduce: {
input: { $split: [ "$sourceList.source", "\n" ] },
initialValue: [],
in: { $concatArrays: [ "$$value", { $split: [ "$$this", " " ] } ] }
}
}
}
}