将Json文件导入Mongoose

4

我需要将一个JSON文件导入到Mongoose数据库中。这应该是一个每天运行的脚本。

我的JSON格式如下:

[
 {
   "grant_title": "name SRL",
   "id": "30579843531",
   "total_amount": "551954"
},{
   "grant_title": "AADI CAPIF ASOCIACION CIVIL",
   "id": "30574449967",
   "total_amount": "37050"
},{
   "grant_title": "LA CAMPAÑOLA S.A",
   "id": "23311183419",
   "total_amount": "139292"
  }
]

我需要将这些信息存储在数据库中。

这可以使用NodeJS(express)脚本实现。请简明扼要,因为我是初学者。


你为什么大声喊叫? - user5832974
抱歉,我的英文很差 :( 。我需要帮助。 :) - Manuel Paiva
1个回答

6

让我们逐步来。首先,您需要创建一个CRON作业或使用NodeJS调度程序(例如agenda)在时间间隔内执行您的函数。

现在,在您的函数内部,您需要将JSON文件加载到NodeJS中。

var json = require('/path/to/file.json');

最后...使用insertMany将一批数据批量插入到您的集合中。
db.collectionName.insertMany(json, function(err,result) {
   if (err) {
     // handle error
   } else {
     // handle success
   }
});

编辑:以下是使用NodeJS中的Agenda在每天上午11:30运行程序的示例

var Agenda = require('agenda');

startScheduler = function() {
    // Set the scheduler utilizing Agenda
    var agenda = new Agenda({db: {address: 'url/to/database'}});

    agenda.define('RUN AT 1130 AM', function(job, done) {
        // your function goes here...
        done();
    });

    agenda.on('ready', function() {
        // CRON SYNTAX
        // * * * * * *
        // Minute / Hour / Day / Month / Day of week (0-6) Sunday-Saturday
        agenda.every('30 11 * * *', 'RUN AT 1130 AM'); // Run daily at 11:30 AM

        agenda.start();
    });
};

startScheduler();

1
在使用 db.collectionName.insertMany(...) 这个方法时遇到了点问题(错误信息为 _'Cannot read property 'insertMany' of undefined'_), 我最终写了一个相似的代码 const mongoose = require('mongoose'); /* ... DB connexion ... */ mongoose.connection.db.collection('collectionName').insertMany(...). 然而,我的建议是完全没有模式的方法(例如,如果你的目标是从可靠的导出中导入数据而不需要担心模式声明),但在大多数情况下,使用 Mongoose 模式会更加安全。 - Maxime Pacary
此外,如果您使用Mongoose Schemas,如果在JSON数据中插入日期字符串,则在Mongo中仍将具有“Date”类型(而不是存储为原始字符串)。同样适用于其他数据类型。 - Maxime Pacary

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接