我想从 mongo 子文档中查找特定字段值,但它检索的是完整数据或空值。我正在使用 mongo 3.0.1 驱动程序。 mongo 特定驱动程序的语法是否有任何问题。
Json数据为:
{
"Demo": {
"Demo Data": {
"Building": {
"A": 1,
"B": 2,
"C": 3,
"D": 4,
},
"Mode": "Building"
}
}
}
代码如下:
DBCollection collection = db.getCollection("demo");
BasicDBObject field = new BasicDBObject();
BasicDBObject document = new BasicDBObject();
field1.put("_id", 0);
field1.put("Demo", 1);
DBCursor cursor = collection.find(document, field);
BasicDBObject object = new BasicDBObject();
BasicDBObject Mode = new BasicDBObject();
while (cursor.hasNext()) {
object = (BasicDBObject) cursor.next();
Mode.put("Mode", object.get(Mode));
System.out.println("Mode value is"+Mode);
}
但是使用上面的代码,输出显示为:
Mode value is {"Mode":null}
要求得到以下输出: {“模式”:“建筑”}
。
请具体说明哪里出了问题。感谢您的帮助。
我认为您错误地假设,既然您输入了 field1.put("Demo", 1);
,它就会返回您的内部文档,而无论如何它总是会返回您完整的文档,它会忽略其他字段,但即使如此,它也将是从根开始的完整文档。
while (cursor.hasNext()) {
object = (BasicDBObject) cursor.next();
Map map = object.toMap();
Mode.put("Mode", map.get("Demo").get("Demo Data").get("Mode")); //pre-check for NPE
System.out.println("Mode value is"+Mode);
}
我是一名优秀的程序员,十分优秀!