您可以更新 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。稍后,集合中的旧数据将替换为聚合数据。
我的问题可能很简单,这里有更多的背景信息。
我有一个 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。稍后,集合中的旧数据将替换为聚合数据。