您可以更新 MongoDB 中的集合并删除一个字段上的 first/last 字符吗?

Can you update a collection in MongoDB and remove the first/last char on one field?

我的问题可能很简单,这里有更多的背景信息。 我有一个 MySQL DB,我使用 ETL 工具来填充 MongoDB,但是我无法创建对它的正确 ObjectId 引用(我只能得到一个字符串ObjectId 的。

到目前为止我有一个想法(可能很疯狂但仍然..可行)

我在一个文档中像这样填充了这个字段:

"field1" : "ObjectId('5d48845c456145ee9d1ccffde')",

我想通过 mongoDB 实现的是删除要获取的第一个和最后一个字符(去除双引号):

"field1" : ObjectId('5d48845c456145ee9d1ccffde'),

(注意 MongoDB 似乎在更改后自动将单引号转换为双引号,因此我的引用变得正确)。

问题是,我找不到任何接近 MongoDB 的更新脚本来实现这一点。

有什么办法吗?

使用 NodeJS 可以工作,但是,在此状态下查询文档不会 return field1(可能导致它发现它不正确)...

如果是一次性更新,可以使用如下查询:

db.COLLECTION.aggregate([
    {
        $addFields:{
            "field1":{
                $toObjectId:{
                    $substrBytes:[
                        "$field1",
                        10,
                        24
                    ]
                }
            }
        }
    },
    {
        $out:"COLLECTION"
    }   
])

在聚合中,'field1' 被转换为 ObjectId。稍后,集合中的旧数据将替换为聚合数据。