【问题标题】:Create mongo document that has a list of documents in Java创建具有 Java 文档列表的 mongo 文档
【发布时间】:2018-06-29 09:42:56
【问题描述】:

我想用 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 文档。

这行得通吗?如果不是,缺陷是什么?逻辑还是实现?

【问题讨论】:

  • 因为测试它,即使是在本地,也比询问要糟糕得多(在这个项目中)。问的问题在哪里?
  • 您在本地只需要一个带有这些代码 sn-ps 的 MainClass 和一个本地 mongo 服务器。无需为此执行您的项目。
  • @Cyctemic 感谢您的正确回复

标签: java mongodb


【解决方案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();
    }
}

【讨论】:

  • 感谢您的回答。这正是我最终在沙盒中所做的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 2013-08-28
  • 2015-05-17
  • 1970-01-01
  • 1970-01-01
  • 2011-08-18
相关资源
最近更新 更多