Problemet är att här:
"sp": {
$split: [
"$sourceList.source",
"\n"
],
$split: [
"$sourceList.source",
" "
]
}
bara den andra $split
exekveras av MongoDB och returnerar hello\nworld
som en sträng. Det finns ingen sådan "kaskadsyntax", eftersom det helt enkelt är samma JSON-nyckel $split
så sist vinner.
För att fixa det kan du använda $reduce för att tillämpa $split
med blanksteg på en array av delad med \n
värden:
{
$project: {
"sp": {
$reduce: {
input: { $split: [ "$sourceList.source", "\n" ] },
initialValue: [],
in: { $concatArrays: [ "$$value", { $split: [ "$$this", " " ] } ] }
}
}
}
}