如何根据第一次出现的分隔符拆分列 MongoDB
How to split a column based on first occurrence of a delimter MongoDB
我有这样的 A 列,它应该根据第一个“-”拆分,示例如下
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 个元素我需要整个字符串,不包括第一个拆分。
让我知道是否有更简单的方法来做到这一点?
查询
- 管道更新需要 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})
我有这样的 A 列,它应该根据第一个“-”拆分,示例如下
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 个元素我需要整个字符串,不包括第一个拆分。
让我知道是否有更简单的方法来做到这一点?
查询
- 管道更新需要 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})