使用Java管理MongoDB嵌入式文档

时间:2019-10-06 12:40:00

标签: java arrays mongodb

我正在使用Java和MongoDB驱动程序3.10.1,在一个我需要存储日期付款的集合上,它看起来像这样

"paid" : {
                "price" : "100",
                "Date" : "2019-10-06T00:00:00Z"
        },

但是,我成功插入了那个,并使用以下查询对其进行了更新:

LocalDate date = LocalDate.now();
Document payment =  new Document("price" , paid_price)
                .append("Date", date);
collection.updateOne(eq("_id", new ObjectId(guest1)),
         combine(set("paid",payment ),currentDate("lastModified") ));

所以,我的问题是:我如何在付费中添加多个这些嵌入式文档,使其看起来像下面的示例,以及如何使用一种简单的方法来访问每个文档?

{
    "paid": [{
            "price": "100",
            "Date": "2019-10-06T00:00:00Z"
        },
        {
            "price": "100",
            "Date": "2019-10-06T00:00:00Z"
        },
        {
            "price": "100",
            "Date": "2019-10-06T00:00:00Z"
        }
    ]
}

最后一个问题是:将mongodb与面向对象编程一起使用的最佳实践是什么?每个类的json解析器作为示例?或创建访问mongo并返回数据的方法?

1 个答案:

答案 0 :(得分:0)

我希望这会有所帮助。这就是我要做的。

 //import java.util.ArrayList;
 //import org.bson.Document;

要嵌入对象,您需要声明要使用的对象。而不是循环遍历初始化对象并将其添加。我创建了三个计划添加到数组中的对象。

 Document root= new Document();
 ArrayList rootPaid= new ArrayList();
 Document rootPaid0 = new Document();
 Document rootPaid1 = new Document();
 Document rootPaid2 = new Document();

然后在这些子对象上填充信息。您可以遍历此过程,并根据需要添加任意数量的对象。每次迭代都必须初始化文档对象,填充信息,然后添加到根目录。

 rootPaid0.append("price","100");

 rootPaid0.append("Date","2019-10-06T00:00:00Z");

 rootPaid1.append("price","100");

 rootPaid1.append("Date","2019-10-06T00:00:00Z");

 rootPaid2.append("price","100");

 rootPaid2.append("Date","2019-10-06T00:00:00Z");

这时,我将所有对象合并在一起以制作所需的json。

 if (!rootPaid.isEmpty()){
 root.append("paid",rootPaid);
 }
 if (!rootPaid0.isEmpty()){
 rootPaid.add(rootPaid0);
 }
 if (!rootPaid.isEmpty()){
 root.append("paid",rootPaid);
 }
 if (!rootPaid1.isEmpty()){
 rootPaid.add(rootPaid1);
 }
 if (!rootPaid.isEmpty()){
 root.append("paid",rootPaid);
 }
 if (!rootPaid2.isEmpty()){
 rootPaid.add(rootPaid2);
 }
 if (!rootPaid.isEmpty()){
 root.append("paid",rootPaid);
 }

UALA!你有你的JSON。

 System.out.println(root.toJson());