我有以下数据结构
{
"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;环境
答案 0 :(得分:0)
我会在1个集合中做很多文档。我发现以这种方式搜索更容易,并且更容易编写类似pojo的代码。
您之前已经回答过您的数据建模问题:Mongodb: multiple collections or one big collection w/ index
我会使用任何非常多的JSON实用程序库(例如GSON)来实现Java。
创建一个包含数据结构中所需的所有字段的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);
}
(不是使用GSON的最精彩的例子,但只是说明了这一点)
答案 1 :(得分:0)
使一个java对象“环境”并包含其中的其他对象会更好。例如,我正在使用基于JPA的对象数据存储映射器,并且您可以使用“@embedded”在该实体中嵌入其他对象,如果您将所有对象嵌入到一个实体中,则可以使用对数据库的单个调用来持久保存所有对象,否则您为了持久保存这三个对象,必须将数据库命中三次。