Save mongodb document in each for loop iteration, instead of waiting to for loop finish -


i want create new document in each iteration, not as-is, documents stored after loop has finished iterations. have wait on 58.000 items in loop, until saves database...

isn't possible tell mongoose somehow save each document after each iteration on loop?

the mongoose schema i'm referring in code called: partcluster

const mongoose = require("mongoose"); const fuzzball = require("fuzzball"); const companypart = require("../../models/parts"); const partcluster = require("../../models/partclusters");  mongoose.connect("mongodb://localhost:27017/automdm", {   keepalive: true,   reconnecttries: number.max_value,   usemongoclient: true });  mongoose.promise = global.promise;  mongoose.connection.on("error", err => {   console.error(`mongoose connection error: ${err}`);   process.exit(1); });  companypart.find({}, { partname: 1 }, (err, parts) => {   var obj = {};   (var = 0, len = parts.length; < len; i++) {     obj[parts[i]["partname"]] = parts[i];   }   parts = new array();   (var key in obj) {     parts.push(obj[key]);   }   createcluster(parts); });  function createcluster(arrayofparts) {   let usedstrings = [];   let clusterarray = [];   len = arrayofparts.length;   (var = 0; < arrayofparts.length; i++) {     let cluster = [];     y = 1;     if (usedstrings.includes(arrayofparts[i].partname)) {       continue;     }     console.log(`item: ${i}, partname: ${arrayofparts[i].partname}`);     (var j = y; j < arrayofparts.length; j++) {       if (         fuzzball.token_sort_ratio(           arrayofparts[i].partname,           arrayofparts[j].partname         ) > "70"       ) {         if (           arrayofparts[i].partname.tolowercase() !==             arrayofparts[j].partname.tolowercase() &&           !cluster.includes(arrayofparts[j].partname) &&           !usedstrings.includes(arrayofparts[j].partname)         ) {           cluster.push(arrayofparts[j].partname);           usedstrings.push(arrayofparts[j].partname);         }       }     }     if (cluster.length > 0) {       let obj = {};       obj.clustername = arrayofparts[i].partname;       obj.partcluster = cluster.sort();       const query = { clustername: arrayofparts[i].partname };       const update = obj;       const options = { upsert: true };       partcluster.findoneandupdate(query, update, options, (error, result) => {         if (error) {           console.log("error when saving cluster: ", error);         }       });     }   } } 

example docs parts

const parts = [     {"_id":"59a942a8c0b7467bf08711df","partname":"0"},     {"_id":"59a94299c0b7467bf084a917","partname":"9129"},     {"_id":"59a94299c0b7467bf084a918","partname":"9130"},     {"_id":"59a94297c0b7467bf08455e0","partname":"9132"},     {"_id":"59a94298c0b7467bf084701f","partname":"9176"},     {"_id":"59a94298c0b7467bf084809f","partname":"9180"},     {"_id":"59a94295c0b7467bf083edf3","partname":"9187"},     {"_id":"59a94298c0b7467bf0848439","partname":"9190"},     {"_id":"59a94295c0b7467bf083ed35","partname":"9227"},     {"_id":"59a94295c0b7467bf083ed36","partname":"9235"},     {"_id":"59a94298c0b7467bf0847032","partname":"9237"},     {"_id":"59a94298c0b7467bf0848438","partname":"9257"},     {"_id":"59a94298c0b7467bf0848c39","partname":"9279"},     {"_id":"59a94295c0b7467bf083edae","partname":"9424"},     {"_id":"59a94295c0b7467bf083edb3","partname":"9425"},     {"_id":"59a9429ec0b7467bf08563ec","partname":"9430"},     {"_id":"59a9429ec0b7467bf08563f6","partname":"9435"},     {"_id":"59a94295c0b7467bf083edb9","partname":"9542"},     {"_id":"59a94295c0b7467bf083edc4","partname":"9577"},     {"_id":"59a942a9c0b7467bf0871bc0","partname":"2651513067"},     {"_id":"59a942aac0b7467bf0874ba5","partname":"cover"},     {"_id":"59a942aac0b7467bf0874923","partname":"bracket"},     {"_id":"59a942a7c0b7467bf086e714","partname":"ring-snap"},     {"_id":"59a942aac0b7467bf087443e","partname":"retainer"},     {"_id":"59a942aac0b7467bf08749d4","partname":"spring"},     {"_id":"59a942aac0b7467bf08748c8","partname":"housing"},     {"_id":"59a942a7c0b7467bf086eaef","partname":"wagner part"},     {"_id":"59a942aac0b7467bf0874a4f","partname":"ring"},     {"_id":"59a942aac0b7467bf0874aef","partname":"gear"},     {"_id":"59a942a8c0b7467bf086f701","partname":"head"},     {"_id":"59a942aac0b7467bf08741f2","partname":"wiper"},     {"_id":"59a942aac0b7467bf08749ea","partname":"seal"},     {"_id":"59a94293c0b7467bf08351d6","partname":"piston sys"},     {"_id":"59a942a7c0b7467bf086eac5","partname":"o-ring-viton"},     {"_id":"59a942aac0b7467bf08749cb","partname":"shim"},     {"_id":"59a942a6c0b7467bf086aa6b","partname":"cage"},     {"_id":"59a942aac0b7467bf0873e29","partname":"rod"},     {"_id":"59a942aac0b7467bf0874a30","partname":"element"},     {"_id":"59a942aac0b7467bf0874bb6","partname":"plate"},     {"_id":"59a942aac0b7467bf087498e","partname":"diaphragm"},     {"_id":"59a94293c0b7467bf08351e1","partname":"support      -upper"},     {"_id":"59a942aac0b7467bf0874a76","partname":"valve"},     {"_id":"59a942aac0b7467bf0873fe5","partname":"lock"},     {"_id":"59a94293c0b7467bf08351e7","partname":"flang-split"},     {"_id":"59a942a9c0b7467bf0872e56","partname":"lockwasher"},     {"_id":"59a942aac0b7467bf087425c","partname":"capscrew"},     {"_id":"59a942aac0b7467bf0874b4d","partname":"hose"},     {"_id":"59a942aac0b7467bf0874bc9","partname":"hose assembly"},     {"_id":"59a942aac0b7467bf0874b58","partname":"washer"},     {"_id":"59a942aac0b7467bf0874b96","partname":"bearing"},     {"_id":"59a942a7c0b7467bf086e06d","partname":"diode assy"},     {"_id":"59a94293c0b7467bf08351f0","partname":"brush assy"},     {"_id":"59a942a7c0b7467bf086e9b1","partname":"board"},     {"_id":"59a942a8c0b7467bf0870900","partname":"cable assy"},     {"_id":"59a942aac0b7467bf0874ad6","partname":"nut"},     {"_id":"59a942aac0b7467bf0874af7","partname":"screw"},     {"_id":"59a942aac0b7467bf0874aa4","partname":"bushing"},     {"_id":"59a942aac0b7467bf0874ad7","partname":"stud"},     {"_id":"59a942aac0b7467bf0874b7c","partname":"bolt"},     {"_id":"59a942aac0b7467bf0874928","partname":"cylinder"},     {"_id":"59a942aac0b7467bf08749ba","partname":"retaining ring"},     {"_id":"59a942aac0b7467bf0874a39","partname":"clamp"},     {"_id":"59a942aac0b7467bf08749dd","partname":"plug"},     {"_id":"59a94293c0b7467bf0835208","partname":"spr booster"},     {"_id":"59a942a9c0b7467bf087325b","partname":"flange screw"},     {"_id":"59a942aac0b7467bf0874a75","partname":"o-ring"},     {"_id":"59a942aac0b7467bf0874b51","partname":"cap"},     {"_id":"59a942aac0b7467bf0874945","partname":"baffle plate"},     {"_id":"59a9429ac0b7467bf084f061","partname":"clamp, hose"},     {"_id":"59a942a9c0b7467bf0873a70","partname":"boot"},     {"_id":"59a942aac0b7467bf0874b73","partname":"switch"},     {"_id":"59a942aac0b7467bf0874156","partname":"hose assy"},     {"_id":"59a942aac0b7467bf0874b3b","partname":"piston"},     {"_id":"59a942aac0b7467bf08740c0","partname":"rotor"} ] 

docs saved in mongodb:

/* 1 */ {     "_id" : objectid("59b5f107366901668ab00074"),     "clustername" : "9129",     "__v" : 0,     "partcluster" : [          "9132",          "9190",          "9279"     ] }  /* 2 */ {     "_id" : objectid("59b5f107366901668ab00075"),     "clustername" : "9130",     "__v" : 0,     "partcluster" : [          "9180",          "9430"     ] }  /* 3 */ {     "_id" : objectid("59b5f107366901668ab00078"),     "clustername" : "9176",     "__v" : 0,     "partcluster" : [          "9187"     ] }  /* 4 */ {     "_id" : objectid("59b5f107366901668ab00079"),     "clustername" : "9227",     "__v" : 0,     "partcluster" : [          "9237",          "9257"     ] }  /* 5 */ {     "_id" : objectid("59b5f107366901668ab0007d"),     "clustername" : "9424",     "__v" : 0,     "partcluster" : [          "9542"     ] }  /* 6 */ {     "_id" : objectid("59b5f107366901668ab0007e"),     "clustername" : "spring",     "__v" : 0,     "partcluster" : [          "ring"     ] }  /* 7 */ {     "_id" : objectid("59b5f107366901668ab0007f"),     "clustername" : "housing",     "__v" : 0,     "partcluster" : [          "bushing"     ] }  /* 8 */ {     "_id" : objectid("59b5f107366901668ab00083"),     "clustername" : "piston sys",     "__v" : 0,     "partcluster" : [          "piston"     ] }  /* 9 */ {     "_id" : objectid("59b5f107366901668ab00084"),     "clustername" : "capscrew",     "__v" : 0,     "partcluster" : [          "screw"     ] }  /* 10 */ {     "_id" : objectid("59b5f107366901668ab00086"),     "clustername" : "clamp",     "__v" : 0,     "partcluster" : [          "cap"     ] }  /* 11 */ {     "_id" : objectid("59b5f107366901668ab00087"),     "clustername" : "lockwasher",     "__v" : 0,     "partcluster" : [          "washer"     ] }  /* 12 */ {     "_id" : objectid("59b5f107366901668ab0008a"),     "clustername" : "bolt",     "__v" : 0,     "partcluster" : [          "boot"     ] }  /* 13 */ {     "_id" : objectid("59b5f107366901668ab0008b"),     "clustername" : "hose assembly",     "__v" : 0,     "partcluster" : [          "hose assy"     ] }  /* 14 */ {     "_id" : objectid("59b5f107366901668ab0008d"),     "clustername" : "9235",     "__v" : 0,     "partcluster" : [          "9425",          "9435"     ] } 


Comments

Popular posts from this blog

resizing Telegram inline keyboard -

command line - How can a Python program background itself? -

php - "cURL error 28: Resolving timed out" on Wordpress on Azure App Service on Linux -