mongodb - 使用 $toLower 更新 MongoDB 集合

我有一个包含用户名的现有 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/

相关文章:

mongodb - 如何从 tar.gz 文件安装 Robomongo 作为 Ubuntu 15.1

mongodb - Spring数据MongoDb : MappingMongoConverter

python - 为什么使用 update_one 更新记录会引发 ValueError?

perl - 如何加快 MongoDB 插入/秒?

mongodb - Mongo 计算一组文档中每个值的出现次数

mongodb - 在 mongodb 中存储图形

ruby-on-rails - Heroku 的 Rails、Mongoid 和 Unicorn 配

mongodb - 为什么我不能使用 Homebrew 更新到最新的 MongoDB?

c# - ORM 与 NoSQL API 是多余的吗?

mongodb - 如何在 MongoDB 中删除或删除集合?