首页 > 解决方案 > 仅当字符串字段存在于MongoDB中时如何拆分它?

问题描述

我试图做类似以下的事情

db.collection.updateMany(
    {"obj.field": {$exists: true}},
    {$set: {"obj.field": {$split: ["$obj.field", ", "]}}}
);

但是,似乎$split不支持更新。仅当字符串字段存在时,如何拆分它?

标签: mongodb

解决方案


$split是聚合运算符,而不是更新运算符。

为了在更新中使用拆分,您需要将聚合管道作为第二个参数传递给updateMany.

由于$set既是更新运算符又是聚合管道( 的别名$addFields),可能如下所示:

db.collection.updateMany(
    {"obj.field": {$exists: true}},
    [{$set: {"obj.field": {$split: ["$obj.field", ", "]}}}]
);

请注意,这需要 MongoDB 4.2+


推荐阅读