0

我构建了一个用户界面来从 MongoDB 导出文档。

用户只需输入数据库的名称和密码,然后应提示他们要导出哪些字段。所以我首先需要能够列出这些字段。这是基于 Java 的,我使用 Morphia。

我的问题是,如何检索存储在集合中的对象类型,以便向用户列出它们的属性?我想 Morphia 的“映射器”类在这里很有用,而且肯定会涉及到一些反射......但我对这些知之甚少。任何帮助表示赞赏!

4

2 回答 2

1

“你如何获得集合名称”是一个很好的问题。如果您直接从 mongo 获取列表,那么您最终可能会得到没有在 morphia 中映射的支持类的集合。您可以从 Mapper ((DatastoreImpl) ds).getMapper() 获取映射的类,并使用该类列表提示用户导出哪些类/字段。

除此之外,您始终可以使用 DBCollection.findOne() 从集合中获取文档,在文档中查找类名字段并使用它来获取类以及可用的字段。这并不排除 mongo 中的文档在 morphia 中包含未映射数据的可能性。如果您迁移架构或在 morphia 之外操作文档,则可能会发生这种情况。只是要记住的事情。

于 2013-07-18T14:29:10.237 回答
-2
MongoTemplate mongoTemplate = new MongoTemplate(mongo, "test_db");
    DBCollection dbc = mongoTemplate.getCollection("collection");
    DBObject query = new QueryBuilder().put("user_id").is(id).get();
    DBObject dbo = dbc.findOne(query);
    if (dbo == null) {
        log.warn("user_id is not exist.");
        return ;
    }
    Set<String> keys = dbo.keySet();
    for (String key : keys) {
        log.info(key + " : " + dbo.get(key));
    }
于 2013-06-27T06:53:47.883 回答