我有一個這樣的列,它應該根據第一個“-”進行拆分,示例如下
MGESAD :
"6095 - NCAM - US - GIUTCB - US Consumer Bank - USRB"
"6595 - NBAM - US - UDAS - Consumer Bank - USRB"
"0595 - NWWAM - US - GWCB - US BANK Bank - USRB - TBL"
I need to split this column into:
Col1 Col2
6095 NCAM - US - GIUTCB - US Consumer Bank - USRB
6595 NBAM - US - UDAS - Consumer Bank - USRB
0595 NWWAM - US - GWCB - US BANK Bank - USRB - TBL
到目前為止嘗試過:
db.getCollection("arTes").aggregate([
{
$addFields: {
MGE_ID: { $arrayElemAt: [ { "$split": [ "$MGESAD y", "-"] }, 0 ] },
MGE_DESC: { $arrayElemAt:[{ "$split": [ "$MGESAD ", "-"] },2] }
}
}
])
MGE_DESC 只給出 2 個元素,我需要整個字串,不包括第一個拆分。
讓我知道是否有任何更簡單的方法來做到這一點?
uj5u.com熱心網友回復:
詢問
- 管道更新需要 MongoDB >= 4.2
- 因為你想在“-”的第一個索引上進行拆分,你可以在不拆分所有“-”出現的情況下做到這一點
- 波紋管找到“-”的索引,左邊是
MGESAD,右邊是MGE_DESC
*如果只想聚合,["$set" ...]在聚合中使用管道
*如果您不想為第一個或最后一個“-”執行此操作split,則可以,然后$concat可能$reduce取決于您的需要,但這里更簡單,因此未使用這些
測驗代碼在這里
updade({},
[{"$set":
{"MGESAD":
{"$substrCP": ["$MGESAD", 0, {"$indexOfCP": ["$MGESAD", " - "]}]},
"MGE_DESC":
{"$substrCP":
["$MGESAD",
{"$add": [{"$indexOfCP": ["$MGESAD", " - "]}, 3]},
{"$strLenCP": "$MGESAD"}]}}}],
{"multi" : true})
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/359650.html
