Node.js 在mongodb中写入数据
我正在使用node.js将大量数据插入mongodb。该程序运行良好,我可以在mongo db的数据库路径中看到,数据以文件形式写入,其中databasename.0为128 kb,databasename.1为256 kb,databasename.0为512 kb,databasename.0为1024 kb,最后一个2048 kb的文件插入最后一个2048 kb的文件时,与mongodb的连接将丢失,数据不会插入。为什么会发生这种情况?如何摆脱这种情况?请给我解释一下这个概念。我将附上用于插入数据的代码。 //connection.js,用于建立连接Node.js 在mongodb中写入数据,node.js,mongodb,Node.js,Mongodb,我正在使用node.js将大量数据插入mongodb。该程序运行良好,我可以在mongo db的数据库路径中看到,数据以文件形式写入,其中databasename.0为128 kb,databasename.1为256 kb,databasename.0为512 kb,databasename.0为1024 kb,最后一个2048 kb的文件插入最后一个2048 kb的文件时,与mongodb的连接将丢失,数据不会插入。为什么会发生这种情况?如何摆脱这种情况?请给我解释一下这个概念。我将附上用于
var Db = require('mongodb').Db;
var connection = require('mongodb').connection;
var Server = require('mongodb').Server;
var connectionInstance;
module.exports = function(callback) {
if (connectionInstance) {
callback(connectionInstance);
return;
}
var serverOptions = {
'auto_reconnect': true,
'poolSize': 100
};
var db = new Db('test', new Server('localhost', 27017, serverOptions));
db.open(function(err, databaseconnection) {
if (err)
console.log(err);
connectionInstance = databaseconnection;
console.log("connection Established");
callback(databaseconnection);
});
};
//The pgm to insert the data on to the mongodb using node.js
var i = 0;
var MongoClient = require('mongodb').MongoClient;
var mongoServer = require('mongodb').Server;
var serverOptions = {
'auto_reconnect': true,
'poolSize': 5
};
var i = 0;
var async = require('async');
var mongoClient = new MongoClient(new mongoServer('localhost', 27017, serverOptions));
var db = mongoClient.db('test');
var collection = db.collection('new_file_test');
var doc
mongoClient.open(function(err, mongoClient) {
if (err) {
console.log(err)
};
function save(callback) {
console.log("Am the first");
doc = {
'trip_paramid': "111",
'tripid': '116',
'lattitude': '12.8929183',
'longitude': '77.63627',
'speed': '2',
'heading': '0',
'altitude': '80469',
'address': 'qwertyasdfgxcvbn',
'engine_status': 'Normal',
'oil_pressure': '83.12',
'water_temp': '28',
'fuel_content': '0',
'brake': 'Normal',
'creation_time': '2013-08-31 23:22:17',
'brakelight_status': 'Normal',
'battery_status': '12.68',
'event_code': '8',
'dbinsert_time': '2013-08-31 23:24:59',
'gsm_status': '-51',
'cell_id': '45',
'vehicle_id': '123456',
'distance': '0'
}
callback(doc);
}
save(function(doc) {
console.log("I got it first");
console.log("Inserting" + i);
collection.insert(doc, function(err) {
if (err)
console.log('Error occured');
else
console.log("Inserted" + i);
});
});
});
问题在于使用的32位mongodb am只能存储2GB左右的数据。当我将其替换为64位时,它工作得非常完美。您能编辑您的问题以更好地格式化代码吗?这是为他做的……当我第一次来到这里时,我也不知道如何格式化代码;)需要诊断的不是您的代码,而是“mongodb的连接丢失,数据未插入”的原因,特别是错误是什么?mongod端(查看日志)是否有错误,应用程序中是否有错误(记录或打印并包含在此处)。数据库中引发的错误:Sat May 17 08:44:02.922 Socket say send()错误号:10054远程主机强制关闭了现有连接。127.0.0.1:270 17 Sat May 17 08:44:03.016错误:套接字异常[发送错误]对于src/mongo/shell/query.js:78 Sat May 17 08:44:03.016上的127.0.0.1:27017,尝试重新连接到127.0.0.1:27017 Sat May 17 08:44:03.952 reconnect 127.0.0.1:27017失败无法连接到服务器127.0.0.1:27017尝试再次运行程序时出错:collection=dbconnection.collection('new_file_test'); ^ TypeError:无法在C:\Documents and Settings\sabarish.radhakrishn\Desktop\from.js:24:28的文档(C:\Documents and Settings\sabarish.radhakrishn\Desktop\connection.js:24:6)调用null的方法“collection”