如何使用JAVA检索存储在mongoDB中的JSON中的键(嵌套)的值?

时间:2014-08-11 06:31:59

标签: java json mongodb

以下是我想从中检索电话号码的JSON文件:

"_data" : {
        "Variable key" : {

        "Name" : "Hello World",
        "Phone" : "Phone : 123-456-6789 ",
        "Region" : "New York",
        "Description" : ""
         }
    }

我的Java代码是:

            BasicDBObject query = new BasicDBObject();
            BasicDBObject field = new BasicDBObject();
            field.put("_data.Phone", 1);
            DBCursor cursor = table.find(query,field);
            String str;
            while (cursor.hasNext()) {
                BasicDBObject obj = (BasicDBObject) cursor.next();
                str=cursor.curr().get("_data.Phone").toString();
                System.out.println(str);
                }

将返回null,因为我没有考虑变量键。

我的问题是mongo数据库中存在许多JSON文件,每个文件都有不同的“变量密钥”,这个密钥可能会在一段时间后发生变化。由于此密钥可能会随时间而变化,我该如何检索电话号码?

谢谢!!

1 个答案:

答案 0 :(得分:0)

您想要哪些电话号码?您的查询将返回所有文档,并且您尝试仅投出电话号码,但投影规格不正确。如果您想要所有电话号码,请完全忽略投影规范或在{ "_data" : 1 }上投影。如果您想要与特定变量键关联的电话号码,请使用点符号(如{ "_data.key_name.Phone" : 1 })将其投影出来。如果您不知道要投影的密钥的名称,那么在您要求MongoDB返回您不知道您想要的内容之前,这是您需要解决的根本问题(或者你不想要的。)