0

我有一个 Google 文档电子表格

key        number
-----      ---------
abc        111
foo        222
...

我想从 Google Docs 中获取这些数据,并更新 MongoDB 中的现有数据。

在 MongoDB 中查找 (key: 'abc') 并使用数字更新:111,foreach 行的最佳方法是什么?

似乎我需要以某种方式将其导出为 JSON,然后运行一些 JS 将使用新数字更新每个键。

谢谢

4

1 回答 1

1

将数据从 Google Docs 导出到 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);
});

不是最有效的方法,但应该很容易遵循这个过程。

于 2013-04-24T08:58:48.467 回答