MongoDB使用脚本更新数据

Bac*_*lit 8 javascript database mongodb

是否有可能使用某种脚本更新mongodb中的数据?我不想(不能)访问mongo shell - 但是想执行mongoshell更新查询.我的数据是一个csv文件.我使用hadoop来分析数据(提取和转换).我需要将数据恢复到mongodb并更新一些属性.作为更新的参考,我想使用生成的id

这项任务可以完成吗?

任何帮助将非常感激

mil*_*lan 12

您想从CSV文件中读取数据并导入mongodb吗?您可以生成一个脚本文件(javascript)并使用mongo shell执行它,就像" 编写shell脚本 "中所述.

示例会话,测试数据库,以空的foo集合开头:

> db.foo.insert({name : "james", position : "forward"})
> db.foo.find()
{ "_id" : ObjectId("4f0c99f6cb435f1e7d7fedea"), "name" : "james",     "position" : "forward" }
> 
Run Code Online (Sandbox Code Playgroud)

然后你生成你的脚本让我们说mongo_scripting.js:

db.foo.insert({name : "wade", position : "guard"});
db.foo.update({name : "james"}, {$set : {position : "power forward"}}, false, true);
Run Code Online (Sandbox Code Playgroud)

并运行脚本:

mongo localhost:27017/test  mongo_scripting.js
Run Code Online (Sandbox Code Playgroud)

回到mongo:

> db.foo.find()
{ "_id" : ObjectId("4f0c99f6cb435f1e7d7fedea"), "name" : "james", "position" : "power forward" }
{ "_id" : ObjectId("4f0c9a64a4a4642bae6459ea"), "name" : "wade",     "position" : "guard" }
> 
Run Code Online (Sandbox Code Playgroud)

你看到一个文件得到更新,一个新文件被插入.

另一种方法是使用java/python ...驱动程序加载数据.