如何从mongo中的子文档中获取特定值

时间:2017-10-16 06:07:13

标签: java mongodb rest

我想从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}

要求是获得以下输出:          {"Mode": "Building"}

请说明情况出错的地方。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

我认为你错误地认为,因为你已经放了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);
}