运行 MongoDB/ Robo3t 中的批处理操作

Running batch operations in MongoDB/ Robo3t

我在一个文件中有一个用户列表,我想在一个集合中更新他们的记录。

db.getCollection('users').update({username: "<a user>"}, { $set: { <set some values here> }})

如何在 Robo 3T 或终端命令行中将用户列表输入此命令或类似命令?

命令行中的以下选项似乎更简单:

选项 A) 从用户列表中即时生成更新查询并发送到 mongo shell:

cat file.csv | awk '{ print("db.users.update({user:\"""\"},{ $set:{x:1} }) ")   }' | mongo 

选项 B) mongo导入

第1步)将用户列表导入临时集合数据库:

 mongoimport --type csv -d test -c usersToUpdate --headerline  file.csv

file.csv:

 userlist
 John
 Donald
 Jeny

第 2 步)导入集合后,您可以执行以下操作:

  db.usersToUpdate.find({},{_id:0,userlist:1}).forEach(function(theuser){      db.users.update({username: theuser.userlist}, { $set: { <set some values here> }}); print(theuser+" record updated successfully");      })

步骤 3) 最后,您可以使用以下方法清理临时 usersToUpdate 集合:

  db.usersToUpdate.drop()