我正在尝试在节点js中执行批量上传,而mongodb
是我的数据库,任何人都可以向我推荐一些关于此的最佳文章。谢谢。
答案 0 :(得分:1)
您可以在mongoose中插入多个包含批量/批量插入的记录。
var arr = [{ name: 'Star Wars' }, { name: 'The Empire Strikes Back' }];
Movies.insertMany(arr, function(error, docs) {});
假设我有一个excel文件 employees.xlsx ,包含以下数据,我想要执行批量写入。
有几个库用于将excel数据转换为节点中的json,我使用xlsx但是你可以使用任何方便的个人品味。
这是我用来阅读“/public/employees.xlsx”文件的助手。我从这里找到了here的内容。
//** helper/excel-reader.js **//
var excelReader = {};
excelReader.readExcel = function(filePath){
var XLSX = require('xlsx');
var workbook = XLSX.readFile(filePath);
var sheet_name_list = workbook.SheetNames;
var data = [];
sheet_name_list.forEach(function(y) {
var worksheet = workbook.Sheets[y];
var headers = {};
for(z in worksheet) {
if(z[0] === '!') continue;
//parse out the column, row, and value
var tt = 0;
for (var i = 0; i < z.length; i++) {
if (!isNaN(z[i])) {
tt = i;
break;
}
};
var col = z.substring(0,tt);
var row = parseInt(z.substring(tt));
var value = worksheet[z].v;
//store header names
if(row == 1 && value) {
headers[col] = value;
continue;
}
if(!data[row]) data[row]={};
data[row][headers[col]] = value;
}
//drop those first two rows which are empty
data.shift();
data.shift();
});
return data;
}
module.exports = excelReader;
现在员工模型看起来像这样。
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var employee = new Schema({
name: String,
adderess: String,
phonenumber: String
});
module.exports = mongoose.model('Employee', employee);
现在让我们使用上面的代码,所以这里是我的 users.js 路由,每当我输入“localhost:3000 / users”时,它会将 csv 内容写入数据库。< / p>
var express = require('express');
var router = express.Router();
var excelReader = require('../helpers/excel-reader');
var mongoose = require('mongoose');
var Employee = require('../models/employee');
/* GET users listing. */
router.get('/', function(req, res, next) {
var employeesJsonArray = excelReader.readExcel('./public/employees.xlsx')
Employee.insertMany(employeesJsonArray,function(error, docs) {
if(error){
next(error)
}
else{
res.json(docs);//just rendering the document i got
}
});
});
module.exports = router;
希望这会有所帮助!!
答案 1 :(得分:0)
您可以使用Model.collection.insert
或Model.insertMany
,如下所示collections
是批量项目。
Model.collection.insert(collections, function (err, models) {
next(err, models);
});
OR,
Model.insertMany(collections, function (err, models) {
next(err, models);
});
猫鼬参考:http://mongoosejs.com/docs/api.html#model_Model.insertMany
Mongo参考:https://docs.mongodb.com/v3.2/reference/method/db.collection.insert/