java - 使用java在mongo 3中查找嵌套值

标签 java mongodb mongodb-query

我的 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"));

关于java - 使用java在mongo 3中查找嵌套值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42281544/

相关文章:

java - 如何用星号替换文本中的特定单词“*"equal to the word' s 长度?

Java 获取与 Jar 相同目录下的文件夹

java - 为什么 EhCache 中的每次 DiskStorage 刷新需要 4 秒?

发布大数据时出现 Java IOException "Unexpected end of file from server"

node.js - 我将如何使用 Mongoose 创建和更新时间序列?

javascript - 如何解决这个 MongoDB/Node 异步问题?

node.js - 如何使用时间戳作为mongodb和nodejs中的字段按天对记录进行分组

mongodb - 计算嵌入文档/数组中字段的平均值

mongodb - 如何对 MongoDB 文档中的散列执行此查询(使用 Mongoid)

mongodb - 从mongodb中的嵌套数组中只检索匹配的对象