将包含多个JSON数据集的日志文件加载到MongoDB中

时间:2016-12-20 03:41:42

标签: json mongodb mongorestore

警告 - 我是MongoDB和JSON的新手。

我有一个包含JSON数据集的日志文件。单个文件具有多种JSON格式,因为它捕获点击流数据。以下是一个日志文件的示例。

[
        {  
           "username":"",
           "event_source":"server",
           "name":"course.activated",
           "accept_language":"",
           "time":"2016-10-12T01:02:07.443767+00:00",
           "agent":"python-requests/2.9.1",
           "page":null,
           "host":"courses.org",
           "session":"",
           "referer":"",
           "context":{  
              "user_id":null,
              "org_id":"X",
              "course_id":"3T2016",
              "path":"/api/enrollment"
           },
           "ip":"160.0.0.1",
           "event":{  
              "course_id":"3T2016",
              "user_id":11,
              "mode":"audit"
           },
           "event_type":"activated"
        },
        {  
           "username":"VTG",
           "event_type":"/api/courses/3T2016/",
           "ip":"161.0.0.1",
           "agent":"Mozilla/5.0",
           "host":"courses.org",
           "referer":"http://courses.org/16773734",
           "accept_language":"en-AU,en;q=0.8,en-US;q=0.6,en;q=0.4",
           "event":"{\"POST\": {}, \"GET\": {}}",
           "event_source":"server",
           "context":{  
              "course_user_tags":{  

              },
              "user_id":122,
              "org_id":"X",
              "course_id":"3T2016",
              "path":"/api/courses/3T2016/"
           },
           "time":"2016-10-12T00:51:57.756468+00:00",
           "page":null
        }
    ]

现在我想将这些数据存储在MongoDB中。所以这是我的新手问题:

  • 我是否需要解析文件,然后将其拆分为2个数据集,然后再存储在MongoDB中?如果是,那么这是一个简单的程序,因为我的文件有多种数据集格式吗?
  • MongoDB中是否存在可以在上传时拆分各种数据集的魔法?

1 个答案:

答案 0 :(得分:1)

首先,你有无效的json格式,请确保你的json格式化,如下所示。成功获取json数据后,您可以执行Mongodb restore选项以将数据插回数据库。

mongorestore --host hostname --port 27017 --dir pathtojsonfile --db <database_name_to_restore>

更多信息请参考https://docs.mongodb.com/manual/reference/program/mongorestore/

格式化json

[
        {  
           "username":"",
           "event_source":"server",
           "name":"course.activated",
           "accept_language":"",
           "time":"2016-10-12T01:02:07.443767+00:00",
           "agent":"python-requests/2.9.1",
           "page":null,
           "host":"courses.org",
           "session":"",
           "referer":"",
           "context":{  
              "user_id":null,
              "org_id":"X",
              "course_id":"3T2016",
              "path":"/api/enrollment"
           },
           "ip":"160.0.0.1",
           "event":{  
              "course_id":"3T2016",
              "user_id":11,
              "mode":"audit"
           },
           "event_type":"activated"
        },
        {  
           "username":"VTG",
           "event_type":"/api/courses/3T2016/",
           "ip":"161.0.0.1",
           "agent":"Mozilla/5.0",
           "host":"courses.org",
           "referer":"http://courses.org/16773734",
           "accept_language":"en-AU,en;q=0.8,en-US;q=0.6,en;q=0.4",
           "event":"{\"POST\": {}, \"GET\": {}}",
           "event_source":"server",
           "context":{  
              "course_user_tags":{  

              },
              "user_id":122,
              "org_id":"X",
              "course_id":"3T2016",
              "path":"/api/courses/3T2016/"
           },
           "time":"2016-10-12T00:51:57.756468+00:00",
           "page":null
        }
    ]