编辑导入MongoDB的JSON文件的内容

时间:2017-02-23 04:10:17

标签: javascript json node.js mongodb

我正在使用Node.js:

  1. 查询外部API。
  2. 将JSON结果保存到文件。
  3. 将查询结果导入MongoDB。
  4. 代码示例:

    //Query the API and save file
    
    var file = '../data/employees.json';
    tl.employees.all(function(response) {
    fs.writeFile(file, JSON.stringify(response, function(key, value) {
        var result = value;
        return result;
    }, 3, 'utf8'));
    
    //Inserts API response above to MongoDB
    
    var insertDocument = function(db, callback) {
        db.collection('employees').insert(response, function(err, result) {
            assert.equal(err, null);
            console.log("Step 2: Inserted Employees");
            callback();
        });
    };
    

    这一切都运行正常,我将以下JSON保存到文件并导入到MongoDB:

    {
     "data": [
    {
     "full name": "Keith Richards",
     "age": 21,
     "userName": "keith1@keith.com",
     "employeeDetails": {
        "id": 102522
    }
    },
    {
    "full name": "Jim Morrison",
     "age": 27,
     "userName": "jim@jim.com",
     "employeeDetails": {
        "id": 135522
     }
    }
    ]
    }
    

    问题在于,由于“数据”部分,它会作为1个对象导入MongoDB。

    像这样:

    {
    "_id" : ObjectId("58ae5ceac10d7a5005fc8370"),
    "data" : [ 
        { // contents as shown in JSON above ..
    

    这使聚合和匹配变得非常困难(或不可能)。

    有没有办法剥离“数据”部分并只导入它的内容,所以每个“员工”都会成为它自己的对象:

    [
    {
     "_id" : ObjectId("58ae5ceac10d7a5005fc8370"),
     "full name": "Keith Richards",
     "age": 21,
     "userName": "keith1@keith.com",
     "employeeDetails": {
        "id": 102522
    }
    },
    {
    "_id" : ObjectId("234332c10d7a5005fc8370"),
    "full name": "Jim Morrison",
     "age": 27,
     "userName": "jim@jim.com",
     "employeeDetails": {
        "id": 135522
     }
    }
    ]
    

1 个答案:

答案 0 :(得分:1)

因此,您可以在将Json发送到文件之前对其进行解析。获得结果后,使用parseJSON(data)检查它是否包含“data”字段。如果是,请将数组放入其中并将其存储到文件中。 基本上,我已经解释了@Bertrand所说的更多内容。 希望这会有所帮助。