有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在映射未知的Morphia中查询对象

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

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

我的问题是,如何检索存储在集合中的对象类型,以便向用户列出它们的属性?我想Morphia中的“mapper”类在这里很有用,当然还涉及到一些反射。。。但我对这些不太了解。感谢您的帮助


共 (2) 个答案

  1. # 1 楼答案

    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));
        }
    
  2. # 2 楼答案

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

    除此之外,您可以随时使用DBCollection。findOne()要从集合中获取文档,请在文档中查找classname字段,并使用该字段获取类以及可用字段。这并不排除mongo中的文档在morphia中包含未映射数据的可能性。如果迁移模式或在morphia之外操作文档,就会发生这种情况。只是要记住一点