【发布时间】:2018-01-12 04:23:18
【问题描述】:
我需要使用 mongoose 从许多 json 文件中导入数据,但我似乎找不到方法。 现在我只是使用 mongoDB 命令导入文件:
mongoimport --db dbName --collection collectionName --file fileName.json --jsonArray
有没有办法用猫鼬做到这一点?这是用猫鼬做的正确方法吗(我正在使用expressJs)?如果不是,用 json 文件中的数据填充我的数据库的正确方法是什么?
这是我迄今为止在 server.js 中所做的
/ Set up
var express = require('express');
var app = express(); // create our app w/ express
var mongoose = require('mongoose'); // mongoose for mongodb
var ObjectId = require('mongodb').ObjectID; // objectID
var morgan = require('morgan'); // log requests to the console (express4)
var bodyParser = require('body-parser'); // pull information from HTML POST (express4)
var methodOverride = require('method-override'); // simulate DELETE and PUT (express4)
var cors = require('cors');
// Configuration
mongoose.connect('mongodb://localhost/data');
app.use(morgan('dev')); // log every request to the console
app.use(bodyParser.urlencoded({ 'extended': 'true' })); // parse application/x-www-form-urlencoded
app.use(bodyParser.json()); // parse application/json
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); // parse application/vnd.api+json as json
app.use(methodOverride());
app.use(cors());
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header('Access-Control-Allow-Methods', 'DELETE, PUT');
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
// Models
var Review = mongoose.model('Review', {
title: String,
description: String,
rating: Number
});
var Site = mongoose.model('Site', {
title: String,
description: String,
rating: Number
});
// Routes
// Get reviews
app.get('/api/reviews', function(req, res) {
console.log("fetching reviews");
// use mongoose to get all reviews in the database
Review.find(function(err, reviews) {
// if there is an error retrieving, send the error. nothing after res.send(err) will execute
if (err)
res.send(err)
res.json(reviews); // return all reviews in JSON format
});
});
【问题讨论】:
-
只需在你的 shell 脚本中创建一个循环。当已经存在执行该功能的工具时,自己编写一些东西来从 JSON 源中解析和插入是一种冗余。这不是一项过于艰巨的任务,但除非您实际上已经做了很多次,否则很难“正确地做”。你也不太可能击败表演。
mongoimport和其他工具是使用 Go 在相当低的水平上编写的,并且在他们所做的事情上毫不逊色。 -
我明白了,所以没有别的办法。谢谢你。你能把这个写成答案,这样我就可以关闭这篇文章了吗?
-
并不是说“没有别的办法”。去写一个已经存在的程序根本不“值得花时间”,而且实际上会比你可能写的任何东西做得更好。所以这只是一个合乎逻辑的选择。
-
好吧,我会保持打开状态,以防出现更好的解决方案。
标签: json node.js mongodb express mongoose