我有Google Doc电子表格
带
key number
----- ---------
abc 111
foo 222
...
我想从Google文档获取此数据,并更新MongoDB中的现有数据。
找到最好的方法(关键:'abc')并使用数字更新:111,MongoDB中的foreach行?
似乎我需要以某种方式将其导出到JSON,然后运行一些JS,它将使用新数字更新每个密钥。
由于
答案 0 :(得分:0)
将Google文档中的数据导出为CSV文件。
gdocs.csv
创建描述CSV文件的文件 - CSV文件中每个字段一行。 gdocsFields.txt
可能如下所示:
key
number
将数据导入临时集合中的mongo实例,例如temp
:
mongoimport --type csv -c temp --fieldFile gdocsFields.txt < gdocs.csv
现在更新您的实时收藏集,例如live
来自mongo控制台的查询。看看这个示例,它还为您创建导入的数据以进行测试。它直接粘贴到mongo
控制台:
db.temp.drop();
db.live.drop();
db.temp.insert({key:'abc', number:111});
db.temp.insert({key:'foo', number:222});
db.temp.insert({key:'xxx', number:333});
db.temp.insert({key:'yyy', number:444});
db.temp.insert({key:'zzz', number:555});
db.live.insert({key:'abc', number:100});
db.live.insert({key:'foo', number:200});
db.live.insert({key:'xxx', number:300});
db.live.insert({key:'yyy', number:400});
db.live.insert({key:'zzz', number:500});
// Update every record
var keys = db.temp.find();
keys.forEach(function(doc){
db.live.update(
{ key:doc.key },
{ $set: {number:doc.number} },
{ upsert: true }
);
print(doc.key);
});
// Print out the live collection
var keys = db.live.find();
keys.forEach(function(doc){
print(doc.key + " is now: " + doc.number);
});
不是最有效的方法,但应该很容易遵循这个过程。