mongodb - 仅当字符串字段存在于MongoDB中时如何拆分它?
问题描述
我试图做类似以下的事情
db.collection.updateMany(
{"obj.field": {$exists: true}},
{$set: {"obj.field": {$split: ["$obj.field", ", "]}}}
);
但是,似乎$split
不支持更新。仅当字符串字段存在时,如何拆分它?
解决方案
$split是聚合运算符,而不是更新运算符。
为了在更新中使用拆分,您需要将聚合管道作为第二个参数传递给updateMany
.
由于$set
既是更新运算符又是聚合管道( 的别名$addFields
),可能如下所示:
db.collection.updateMany(
{"obj.field": {$exists: true}},
[{$set: {"obj.field": {$split: ["$obj.field", ", "]}}}]
);
请注意,这需要 MongoDB 4.2+