我的mongo集合中有一个文档如下:

{
  "timestamp": 1460442540,
  "page": "home",
  "misc": {
             "color": "red",
             "light": "off"
          }
}


我想要做的是在页面上满足特定条件时返回misc.color的值。

这就是我所拥有的:

   //find my query match
   Document value = mongoDBService.getCollection(collectionName)
            .find(eq("page", "home")).first();

    //prints json described above
    LOG.info(value.toString());

    //prints "misc" subdocument
    LOG.info(value.get("misc").toString());

    //null pointer
    LOG.info(value.get("misc.color").toString());


有什么方法可以处理我所缺少的点符号吗?理想情况下,我希望此查询是动态的,以便它可以处理点表示法值和更高级别的值。

我正在使用mongodb-driver 3.4.2。

最佳答案

您可以将代码更新到下面。

Document value = mongoDBService.getCollection(collectionName)
            .find(eq("page", "home")).first();

LOG.info(value.get("misc", Document.class).getString("color"));

10-08 08:39