我有一个包含用户名的现有 MongoDB 集合。用户名包含小写和大写字母。
我想更新所有用户名,使它们只包含小写字母。
我试过这个脚本,但没有用
db.myCollection.find().forEach(
function(e) {
e.UserName = $toLower(e.UserName);
db.myCollection.save(e);
}
)
最佳答案
MongoDB 没有将 $toLower
作为命令的概念。解决方案是对数据运行一个大的 for
循环并单独发布更新。
您可以在任何驱动程序或 shell 中执行此操作:
db.myCollection.find().forEach(
function(e) {
e.UserName = e.UserName.toLowerCase();
db.myCollection.save(e);
}
)
您还可以将保存替换为原子更新:
db.myCollection.update({_id: e._id}, {$set: {UserName: e.UserName.toLowerCase() } })
同样,您也可以从任何驱动程序中执行此操作,代码将非常相似。
编辑:雷蒙提出了一个很好的观点。 $toLower
命令确实作为聚合框架的一部分存在,但这与更新无关。更新的文档是 here .
https://stackoverflow.com/questions/9423932/