MongoDB updateMany与子字符串的字符串构建



我遇到了一个更新许多值的问题。我是MongoDB方面的新手。我有个任务要在数据库中统一日期。日期是字符串,现在它们以yyyyMMdd格式存储。我应该把它更新到年月日。我知道将日期存储为字符串远非理想,但这是由实现其他公司的数据标准引起的。

我尝试使用。foreach(),但当我在js函数中构建字符串时,StudioT3声称我应该使用更现代的版本,因为它无法识别令牌"{"然后我尝试使用。updatemany(),但它似乎根本不起作用。很抱歉没有包含任何代码,但几个小时后我什么也没得到。

总结:我有一个集合Foo日期在格式"yyyyMMdd"我需要为迁移工具创建一个查询(在.js中),它将转换为"yyyy-MM-dd"此外,我今天做了一个教程,但没有人足够详细地介绍它。你能给我提示一下如何解决这个问题吗?我不期望有一个完整的解决方案,但我甚至不知道应该用什么正确的方法来更新这些值。

I try with forEach(),

SyntaxError: Unexpected token (1:52)
> 1 |   let formatedDate = year + "-" + month + "-" + day;}});
|                                                     ^
2 |
SyntaxError: Unsyntactic continue. (3:4)
1 | db.DummyController.find().forEach(function(myDoc) {
2 |   {if (myDoc.submissiondate.length != 6) {
> 3 |     continue;
|     ^
4 |   }
5 |

updateMany(),还有一点聚合。我希望得到一个如何做的提示,即使不是一个完整的解决方案。

可以从MongoDB 4.2开始使用聚合管道更新,

  • $substr从起始索引和字符数获取子字符串
  • $concat连接上述操作返回的字符串
db.collection.updateMany(
{}, // query
[{
$set: {
date: {
$concat: [
{ $substr: ["$date", 0, 4] },
"-",
{ $substr: ["$date", 4, 2] },
"-",
{ $substr: ["$date", 6, 2] }
]
}
}
}
])

游乐场

注意:请先在开发数据库中测试此查询,然后再在生产数据库中执行!

相关内容

  • 没有找到相关文章

最新更新