以下是我想从中检索电话号码的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文件,每个文件都有不同的“变量密钥”,这个密钥可能会在一段时间后发生变化。由于此密钥可能会随时间而变化,我该如何检索电话号码?
谢谢!!
答案 0 :(得分:0)
您想要哪些电话号码?您的查询将返回所有文档,并且您尝试仅投出电话号码,但投影规格不正确。如果您想要所有电话号码,请完全忽略投影规范或在{ "_data" : 1 }
上投影。如果您想要与特定变量键关联的电话号码,请使用点符号(如{ "_data.key_name.Phone" : 1 }
)将其投影出来。如果您不知道要投影的密钥的名称,那么在您要求MongoDB返回您不知道您想要的内容之前,这是您需要解决的根本问题(或者你不想要的。)