创建具有Java文档列表的mongo文档

时间:2018-06-29 09:42:56

标签: java mongodb

我想用Java创建一个mongo文档以插入到我的mongo集合中。目前,我正在使用的mongo文档中没有文档列表,我想向其中添加一个文档。

我的文档应如下所示:

{
 id : 1,
 events : [
           { event_id : 1, processed : false},
           { event_id : 2, processed : false},
           .
           .
          ],
 assigned_user : 32
}

要创建mongo文档,我不得不创建

Map<String, Object> dataFields

然后将其转换为mongo文档。

所以要添加我需要的文档列表,我想到了创建

 List<Document> events

然后为我需要的每个事件创建一个文档,然后将其添加到events的列表中。

最后,我只需将列表events添加到地图dataFields,然后创建最终的mongo文档。

这项工作吗?如果没有,那么缺陷是什么?逻辑还是实现?

1 个答案:

答案 0 :(得分:1)

如果您有想法,请尝试一下。如果您的项目环境不允许您尝试,请将其沙箱化。我会尝试一下,但是我的Java生锈了,这台计算机上没有JDK。从此开始:

public class MongoSandbox {

    public static void main(String[] args) throws UnknownHostException {

        // Connect to local test db
        MongoClientURI uri  = new MongoClientURI("mongodb://localhost:27017/test"); 
        MongoClient client = new MongoClient(uri);
        MongoDatabase db = client.getDatabase(uri.getDatabase());

        // Get a test collection
        MongoCollection<Document> docs = db.getCollection("docs");

        /* Create a dummy list of events  */
        List<Document> events = new ArrayList<Document>();
        events.add(new Document("random", "data"));
        events.add(new Document("random", "data2"));
        events.add(new Document("random", "data3"));

        // Create your main document
        Document mainDoc = new Document("events", events);
        docs.insert(mainDoc);

        client.close();
    }
}