使用java将子文档添加到mongodb

时间:2016-04-26 12:18:18

标签: 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代码),任何建议都表示赞赏,谢谢。

2 个答案:

答案 0 :(得分:0)

这需要按照将数据插入地图的方式进行处理。

以前,您正在将键EL_ID,名称和投票设置到主地图中。但是,您需要创建一个地图,例如_embedded,并且需要将上面提到的密钥设置到其中。

当将整个DTO插入数据库时​​,它将保存在您提到的结构中。

答案 1 :(得分:0)

经过一些尝试后,我已经解决了简单地创建一个包含所有元素的ArrayList并将其附加到文档中的字符串键“_embedded”