这是我第一次使用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代码),任何建议都很感激,谢谢。
最佳答案
这需要以将数据插入 map 的方式来处理。
之前,您将键 EL_ID、名称和投票设置到主 map 中。但是,您需要创建一个 map (例如_embedded),并且需要将上面提到的键设置到其中。
当这个整体DTO插入到DB中时,它将被保存在你提到的结构中。
关于java - 使用java向mongodb添加子文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36864737/