问题描述
我正在尝试读取一个JSON文件,其中包含约200.000行,每行包含一个格式如下的小型JSON文档:
{
<some key properties>,<some 2-3 properties>,// unimportant for this question
updateCounter1: -1,updateCounter2: 0,updateCounter3: 3
}
现在,我要将其插入到MongoDb中,文档应具有以下格式:
{
<some key properties>,counter1: 3748,counter2: 722,counter3: 2848
}
这意味着,对于原始文件中具有相同键属性的每一行,其反更新应添加到已经存储在数据库中的内容的顶部。
在我的代码中,当前看起来像这样:
let item = {
query: {
refSpHash: ...,gender: ...,age: ...,state: ...,district: ...
},set: {
refSp: ...,msgSp: ...
},counters: {
counter1: 1,counter2: -2,counter3: 4
}
};
// (....)
let update = { $set: _.assign({},item.set,item.query),$inc: item.counters };
collection.updateOne(item.query,update,{ upsert: true },(err) => { ... });
因此,我正在使用$inc
运算符对输入值JSON给出的DB值进行相对增大/减小,对于其余属性使用$set
进行相对增大/减小。
上面的代码是对输入文件中的每一行执行的,我正在使用async.eachSeries
来逐行导入每一行。
现在的问题是,虽然它似乎可以正常工作,但要花很多时间才能完成。我大约半小时前就开始导入了,现在仍在导入。因此,很可能我刚刚编写了一些非常糟糕的代码。
有人可以帮助我改善导入逻辑,以便处理更快吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)