java - 使用java向mongodb添加子文档

标签 java mongodb

这是我第一次使用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/

相关文章:

node.js - 如何使用另一个集合 Mongoose 查找子查询文档

java - 如何迭代 Spring thymeleaf 中的对象列表

java - RichFaces 保存文件

java - 在 Controller 之前验证请求参数

MongoDB 社区 : Error when installing service as local or domain user

javascript - 403 Forbidden 和 request.method 在 django 中显示 GET

python - 使用python在mongodb中进行大量插入

javascript - 如何将返回值推送到数组 mongodb 中?

java - 我的按钮 "close"不关闭但隐藏页面

java - JPA( hibernate ): Error when using @EmbeddedId in generic @MappedSuperclass