【问题标题】:How to programmatically import JSON into MongoDB via node.js如何通过 node.js 以编程方式将 JSON 导入 MongoDB
【发布时间】:2016-10-07 11:09:34
【问题描述】:

我有一个大型嵌套对象,定义为来自移动应用程序的单个文档,我想通过 Express 支持的 REST API 将其备份到 MongoDB。这不是经常或实时完成的事情,因此我不需要构建完整的事务 API,如果可能的话,我宁愿将备份和恢复作为单个操作。

在命令行上执行此操作很简单,但我想构建一个 REST API 以编程方式执行此操作。命令行示例:

mongoimport --db workouttest --collection workouts --file workouts.json --jsonArray

Sample JSON 在上面的 mongoimport 示例中使用,由以下架构定义:

var mongoose     = require('mongoose');
var Schema       = mongoose.Schema;

var workoutSchema   = new Schema({
    name: String,
    startDate: Date,
    userProfile: {
        age: Number,
        name: String,
        bodyWeight: Number
    },
    program: [{
        name: String,
        goal: Number,
        notes: String,
        workoutDiary: [{
            date: Date,
            sets: [{
                repCount: Number,
                weight: Number
            }]
        }]
    }]
});

module.exports = mongoose.model('Workout', workoutSchema);

【问题讨论】:

    标签: json node.js mongodb rest express


    【解决方案1】:

    windows上的解决方案:-

    第 1 步: 创建一个 bat 文件

    文件名:“myimport.bat”

    cd D:\workspaces\mongodb_node
    mongoimport -d localhost -c workouts < workouts.json
    echo "completed...."
    exit /b 0
    

    第 2 步:

    请确保相应更改数据库名称和bat文件名

    var Db = require('mongodb').Db, MongoClient = require('mongodb').MongoClient, Server = require('mongodb').Server, ReplSetServers = require('mongodb').ReplSetServers, ObjectID = require('mongodb').ObjectID, Binary = require('mongodb').Binary, GridStore = require('mongodb').GridStore, Grid = require('mongodb').Grid, Code = require('mongodb').Code,
    assert = require('assert');
    
    var db = new Db('localhost', new Server('localhost', 27017));
    
    db.open(function(err, db) {
    var spawn = require('child_process').spawn;
    var bat = spawn('cmd.exe', ['/c', 'myimport.bat']);
    bat.stdout.on('data', (data) => {
              console.log("Commands ...");
            });
    
            var exec = require('child_process').exec;
            exec('myimport.bat', (err, stdout, stderr) => {
                  if (err) {
                    console.error(err);             
                  }
                  console.log("Executing ...");
                });
    });
    

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 1970-01-01
      • 2020-08-06
      • 2017-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多