我正在使用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并返回数据的方法?
答案 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());