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", " " ] } ] }
}
}
}
}