我该如何将这组数据存储到Mongo Collection中

时间:2014-05-28 14:29:41

标签: java mongodb

我有以下数据结构

{
   "routers": [
   {
      "name": "",
      "ip address": "",
   }
   ],

   "devices": [
   {
      "name": "",
      "mac address": [
         <address>,
         <address>,
         <address>
      ],
   }
   ],

   "connection": [ 
   {
      "source":"<name>",

      "destination":"<name>",  

   }
   ]
}

我想将它存储在Mongo数据库中(在Java Web应用程序中)。我只是需要一些关于如何构建它的意见。

我是否将所有这些JSON放入一个Mongo Collection中,名为&#34; Environment&#34;?

我想将数据映射到Java对象,我是否有三个单独的对象&#34;路由器&#34;,&#34;设备&#34;和#34;连接&#34;或者我制作一个Java对象&#34;环境&#34;并在该特定对象中列出上面列出的三个Java对象?我觉得第二种选择是最好的。

我很想找到关于设计这个的最佳方法的一些建议,而不是稍后尝试改变它。

不重要,但我也将使用Jongo

编辑以显示潜在的课程:

private class Environment {
    private List<Router>;

    private List<Device>;

    private List<Connection>

    ...
}

会有多个&#34;环境&#34;基本上我们正在构建的是一个配置管理系统,所以有不同的&#34;配置&#34;环境

2 个答案:

答案 0 :(得分:0)

我会在1个集合中做很多文档。我发现以这种方式搜索更容易,并且更容易编写类似pojo的代码。

您之前已经回答过您的数据建模问题:Mongodb: multiple collections or one big collection w/ index

我会使用任何非常多的JSON实用程序库(例如GSON)来实现Java。

  1. 创建一个包含数据结构中所需的所有字段的pojo类:

    private List<Router> routers;
    ...
    private static class Router {
        private String name;
        ...
    }
    
  2. 如果需要,请创建getter / setter

  3. 使用您的实用程序转换为/来自

    下面的实用程序类的示例
    import com.google.gson.Gson;
    import com.google.gson.JsonParser;
    
    private static Gson gson = new Gson();
    private static final JsonParser parser = new JsonParser();
    
    public static <T> T toPojoObject(String json, Class<T> clazz, Gson aGson) {
        return aGson.fromJson(createJSONObject(json).getAsJsonObject(), clazz);
    }
    
    public static JsonElement createJSONObject(String json) {
        return parser.parse(json);
    }
    
  4. (不是使用GSON的最精彩的例子,但只是说明了这一点)

答案 1 :(得分:0)

使一个java对象“环境”并包含其中的其他对象会更好。例如,我正在使用基于JPA的对象数据存储映射器,并且您可以使用“@embedded”在该实体中嵌入其他对象,如果您将所有对象嵌入到一个实体中,则可以使用对数据库的单个调用来持久保存所有对象,否则您为了持久保存这三个对象,必须将数据库命中三次。