Vấn đề là ở đây:
"sp": {
$split: [
"$sourceList.source",
"\n"
],
$split: [
"$sourceList.source",
" "
]
}
chỉ $split thứ hai được thực thi bởi MongoDB và nó trả về hello\nworld như một chuỗi. Không có cú pháp "thác nước" như vậy, vì nó chỉ đơn giản là cùng một khóa JSON $split vì vậy chiến thắng cuối cùng.
Để khắc phục điều đó, bạn có thể sử dụng $ Reduce để áp dụng $split bởi khoảng trắng trên một mảng được chia theo \n giá trị:
{
$project: {
"sp": {
$reduce: {
input: { $split: [ "$sourceList.source", "\n" ] },
initialValue: [],
in: { $concatArrays: [ "$$value", { $split: [ "$$this", " " ] } ] }
}
}
}
}