Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将这组数据存储到Mongo集合中_Java_Mongodb - Fatal编程技术网

Java 如何将这组数据存储到Mongo集合中

Java 如何将这组数据存储到Mongo集合中,java,mongodb,Java,Mongodb,我有以下数据结构 { "routers": [ { "name": "", "ip address": "", } ], "devices": [ { "name": "", "mac address": [ <address>, <address>, <address> ], } ], "

我有以下数据结构

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

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

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

      "destination":"<name>",  

   }
   ]
}
{
“路由器”:[
{
“名称”:“,
“ip地址”:“,
}
],
“设备”:[
{
“名称”:“,
“mac地址”:[

编辑以显示潜在类别:

private class Environment {
    private List<Router>;

    private List<Device>;

    private List<Connection>

    ...
}
私有类环境{
私人名单;
私人名单;
私人名单
...
}

将有多个“环境”,本质上我们正在构建的是一个配置管理系统,因此有不同的环境“配置”。

我会在一个集合中编写大量文档。我发现这样搜索更容易,编写类似pojo的代码也更容易

您的数据建模问题之前已得到回答:

我会在Java中使用很多JSON实用程序库(例如GSON)

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

    private List<Router> routers;
    ...
    private static class Router {
        private String name;
        ...
    }
    
    私有列表路由器;
    ...
    专用静态类路由器{
    私有字符串名称;
    ...
    }
    
  • 如果需要,创建getter/setter

  • 使用您的实用程序进行转换,例如下面的实用程序类

    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);
    }
    
    import com.google.gson.gson;
    导入com.google.gson.JsonParser;
    私有静态Gson Gson=new Gson();
    private static final JsonParser parser=new JsonParser();
    公共静态T toPojoObject(字符串json,类clazz,Gson-aGson){
    返回aGson.fromJson(createJSONObject(json).getAsJsonObject(),clazz);
    }
    公共静态JsonElement createJSONObject(字符串json){
    返回parser.parse(json);
    }
    

  • (好的,这不是使用GSON最精彩的例子,但只是说明了这一点)

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

    因此,在一个集合中推荐大量文档,您会将所有对象包装在父对象中吗“连接”对象并将其另存为文档?不,我不会包装。我会有一个文档,即名为“网络”的类(或其他任何类)。网络包含您的数据结构,与我上面写的类(部分)相同。您在一个集合中有许多网络文档。抱歉,我实际上假设您有多个“网络”“不是吗?我用一个代表我最初想法的类编辑了我的原始问题。“环境”类基本上包含网络。我们可能在这里讨论相同的事情。我们的想法是将环境类的json版本持久化到一个Mongo CollectionOk中,我想我们讨论的是相同的事情…相应地编辑了我的答案