我有三個看起來像這樣的檔案:
_id: ObjectId('61e1312ad435c7124aa883a1')
name: "Brian"
languages: "English,Spanish,French"
_id: ObjectId('52e1312ad435c7124aa883a2')
name: "Max"
languages: "English"
_id: ObjectId('37e1312ad435c7124aa883a9')
name: "Mike"
languages: ""
如您所見,語言欄位可以是空的、有一個專案或多個專案,以逗號分隔。
如何將語言欄位轉換為陣列?最終結果應如下所示:
_id: ObjectId('61e1312ad435c7124aa883a1')
name: "Brian"
languages: [
"English",
"Spanish",
"French"
]
_id: ObjectId('52e1312ad435c7124aa883a2')
name: "Max"
languages: [
"English"
]
_id: ObjectId('37e1312ad435c7124aa883a9')
name: "Mike"
languages: []
uj5u.com熱心網友回復:
您可以使用$split來執行此操作,如下所示:
db.collection.aggregate([
{
$addFields: {
"languages": {
$filter: {
input: {
$split: [
"$languages",
","
]
},
cond: {
$gt: [
{
$strLenCP: "$$this"
},
0
]
}
}
}
}
}
])
蒙戈游樂場
如果要更新整個集合,可以在更新中使用相同的流水線,使用“流水線更新”語法:
db.collection.updateMany(
{},
[
{
"$set": {
"languages": {
$filter: {
input: {
$split: [
"$languages",
","
]
},
cond: {
$gt: [
{
$strLenCP: "$$this"
},
0
]
}
}
}
}
}
])
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/490023.html
