【发布时间】:2021-06-15 02:11:45
【问题描述】:
我在集合中的 mongoDB 文档上有几个数据问题。我正在尝试编写一个 db.collection.updateAll 脚本来更新文档,但无论我做什么,我似乎都无法让它工作。
我想将存储在 data.date 中的文本字符串从字符串转换为:
“数据”:{ “日期”:“2019-01-07T00:00:00.000Z” }
进入 ISO 日期。
我想获取 _id 字段,并将其复制到一个名为“id”的字段中,我知道这可能看起来很愚蠢,但是我们的一些报告中有一个错误,我无法在其中获取代码更新几周,因此通过“id”和“_id”字段提供数据将停止服务台呼叫,直到我得到适当的修复。
我一直在尝试这个:
db.getCollection("myCollection").updateMany({},
[{
"$set": {
{ "id" : ["$_id"] } ,
"$data.date": {
"$dateFromString": {
dateString: '$data.date'
}
}
}
}]
);
但是两个字段都没有设置。当我单独运行两个 $sets 时,我收到以下错误消息...
当我尝试设置“id”时:
db.getCollection("myCollection").updateMany(
{},
{ $set: { "id" : ["$_id"] } }
);
它只是将值设置为“$_id”,而不是从 _id 字段中获取值。
如果我尝试设置日期字段
db.getCollection("myCollection").updateMany(
{},
{ $set: { "$data.date": {
"$dateFromString": {
dateString: '$data.date'
}
} } }
);
我收到错误消息:
“$data”中的美元($)前缀字段“$data”对存储无效。
我可以在网上找到的所有示例都显示了如何设置文字值,但似乎没有一个有助于从字段本身获取新值。
【问题讨论】:
-
你的 mongoDB 版本是多少?
标签: mongodb mongo-shell