我正在更改一个MongoDB集合的模式.(我一直将日期存储为字符串,现在我的应用程序将它们存储为ISODates;我需要返回并更改所有旧记录以使用ISODates.)我想我知道如何使用更新来执行此操作,但是因为这个操作会影响成千上万的记录,所以我不愿意发出一个我不是100%肯定会运作的操作.是否有任何方法可以对更新进行"干运行",以便为少数记录显示原始记录以及如何更改?
编辑:我最终使用为每条记录添加新字段的方法,然后(在验证数据是正确的之后)重命名该字段以匹配原始字段.它看起来像这样:
db.events.find({timestamp: {$type: 2}})
.forEach( function (e) {
e.newTimestamp = new ISODate(e.timestamp);
db.events.save(e);
} )
db.events.update({},
{$rename: {'newTimestamp': 'timestamp'}},
{multi: true})
Run Code Online (Sandbox Code Playgroud)
顺便说一下,将字符串时间转换为ISODates的方法最终起作用了.(我从这个SO答案中得到了这个想法.)
| 归档时间: |
|
| 查看次数: |
4562 次 |
| 最近记录: |