Node.js 如何在更新多个对象时提高MongoDb性能
我试图读取一个JSON文件,该文件包含大约200.000行,每行包含一个小JSON文档,格式如下:Node.js 如何在更新多个对象时提高MongoDb性能,node.js,mongodb,performance,import,Node.js,Mongodb,Performance,Import,我试图读取一个JSON文件,该文件包含大约200.000行,每行包含一个小JSON文档,格式如下: { <some key properties>, <some 2-3 properties>, // unimportant for this question updateCounter1: -1, updateCounter2: 0, updateCounter3: 3 } 因此,我使用$inc操作符相对增加/减少输入JSON给出的D
{
<some key properties>,
<some 2-3 properties>, // unimportant for this question
updateCounter1: -1,
updateCounter2: 0,
updateCounter3: 3
}
因此,我使用$inc
操作符相对增加/减少输入JSON给出的DB值,并对其余属性使用$set
。
上面的代码是针对输入文件中的每一行执行的,我使用async.eachSeries
逐个导入每一行
现在的问题是,虽然它似乎起作用,但它需要很长时间才能完成。我大约半小时前就开始导入了,现在仍在导入。所以很可能我刚刚写了一些非常糟糕的代码
有谁能帮我改进导入逻辑,使处理更快吗?你想过JSON流吗?不知道那是什么。这对将对象插入MongoDB有什么帮助?输入文件在1-2秒内被解析,但将JS对象插入MongoDB需要的时间最多。请尝试将其与。
{
<some key properties>,
<some 2-3 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) => { ... });