这是我第一次使用mongodb而且我以这种方式从java添加了文档:
//document populated with for cycle
document.append(element.getID().toString(), new Document("EL_ID", feedback.getPos(i).getID())
.append("name", element.getName())
.append("vote", 5)
);
//and write (replaceOne is correct for my program's logic)
BasicDBObject searchQuery = new BasicDBObject().append("_id", MainDocID);
collection.replaceOne(searchQuery, document);
结果是:
{
"_embedded": {},
"_links": { ... },
"_type": "DOCUMENT",
"_id": { ... },
"element_ID_1": {
"EL_ID": {
"$oid": "element_ID_1"
},
"name": "one",
"vote": 5
},
"element_ID_2": {
"EL_ID": {
"$oid": "element_ID_2"
},
"name": "two",
"vote": 5
},
"_created_on": "date"
}
我认为将这些元素放在“_embedded”中是正确的,而且它也更有序,但我不知道这是怎么做的。
我想要达到这个结果:
{
"_embedded": {
"element_ID_1": {
"EL_ID": {
"$oid": "element_ID_1"
},
"name": "one",
"vote": 5
},
"element_ID_2": {
"EL_ID": {
"$oid": "element_ID_2"
},
"name": "two",
"vote": 5
}
},
"_links": {},
"_type": "DOCUMENT",
"_id": {},
"_created_on": "date"
}
或例如(相同原则):_embedded - > elements_lista - > “element_ID_n”
我找不到适合我案例的例子(来自java代码),任何建议都表示赞赏,谢谢。
答案 0 :(得分:0)
这需要按照将数据插入地图的方式进行处理。
以前,您正在将键EL_ID,名称和投票设置到主地图中。但是,您需要创建一个地图,例如_embedded,并且需要将上面提到的密钥设置到其中。
当将整个DTO插入数据库时,它将保存在您提到的结构中。
答案 1 :(得分:0)
经过一些尝试后,我已经解决了简单地创建一个包含所有元素的ArrayList并将其附加到文档中的字符串键“_embedded”