Node.js MongoDB插入时间太长
我在MongoDB集合中插入文档时有一个特定的循环。但是只有最后一个文档被插入,可能是因为循环对于插入来说太快了。 如何使循环等待插入完成? 这是我的密码:Node.js MongoDB插入时间太长,node.js,mongodb,Node.js,Mongodb,我在MongoDB集合中插入文档时有一个特定的循环。但是只有最后一个文档被插入,可能是因为循环对于插入来说太快了。 如何使循环等待插入完成? 这是我的密码: mongo.connect(url, function(err, db) { if (err) throw err; var dbo = db.db("mydb"); for (var i = 0; i < totalEmployee; i++) { var some =
mongo.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
for (var i = 0; i < totalEmployee; i++) {
var some = array_data[index].split(":");
var thing = some[1].split("\"");
var EID = thing[1];
var Info = [];
index++;
for (var j = 0; j < 2; j++) {
var some = array_data[index].split(":");
var thing = some[1].split("\"");
var first = thing[1];
thing = some[2].split("\"");
var second = thing[0];
Info[j] = first + ":" + second;
index++;
}
console.log(Info);
var unique = date + EID;
dbo.collection("Attendance").find({_id: unique}).toArray(function (err, result) {
if (!result.length) {
dbo.collection("Attendance").insertOne({
_id: unique,
Date: date,
EID: EID,
InTime: Info[0],
OutTime: Info[1]
},function(err, res) {
if (err) throw err;
console.log("1 document inserted");
inserted=false;
}
);
}
else {
console.log(unique+date+EID+Info[0]);
var myquery = {_id: unique};
var newvalues = {$set: {Date: date, EID: EID, InTime: Info[0], OutTime: Info[1]}};
dbo.collection("Attendance").updateOne(myquery, newvalues, function (err, res) {
if (err) throw err;
console.log("1 document updated");
inserted=false;
});
}
}
}
mongo.connect(url、函数(err、db){
如果(错误)抛出错误;
var dbo=db.db(“mydb”);
对于(变量i=0;i
})嘿!如果你允许的话,给我一些建议,让我有一个更可读的代码。1)首先为你声明的
var i
;然后使用index++-Error/Typo?2)尝试将你的代码分成3个不同的部分(函数)取决于每个人的角色3)除非你有真正的理由为什么不让mongoDB生成自己的\u id
?它肯定是唯一的,并且通过使用ObjectID Mongo的类型,你在搜索和其他操作中会有更好的性能。4)使用单例连接到你的DB。如果没有,你将在每次someon时触发连接e将使用这一组代码。是的!singleton!!非常感谢你!这对我很有用!