java - 列表列表中的 Spring Mongo 标准

标签 java spring mongodb hibernate mongodb-query

嗨,我正在使用 spring data mongo,我需要根据多个 where 条件获取数据。当我想将 where 子句应用于列表中的列表时遇到的问题。

例如

{
    "_id" : ObjectId("5982bf9339f3c92b84be4737"),
    "_class" : "com.paladion.payment.model.GroupQuestionMapping",
    "saqID" : "SAQ A",
    "saqVersion" : "3",
    "questionTab" : {
        "Secure Network" : [ 
            {
                "number" : "2.1 (a)",
                "question" : "Are vendor-supplied"
        "description" : "<ul><li>Review"
        }, 
            {
                "number" : "2.1 (b)",
                "question" : "Are unnecessary"
        "description" : "<ul><li>Review policies 
        }
         ],
        "Access Control" : [ 
            {
                "number" : "2.1 (a)",
                "question" : "Are vendor-supplied"
        "description" : "<ul><li>Review"
        }, 
            {
                "number" : "2.1 (b)",
                "question" : "Are unnecessary"
        "description" : "<ul><li>Review policies 
        }
        ]
    }
}

在这里,我需要获取数据,其中 saqId 是 SAQ A,saq 版本是 3,questionTab 是安全网络。

我在 QuestionTab 上应用标准时遇到问题。

我的代码:

Query query = new Query();
query.addCriteria(Criteria.where("saqtype").is(saqType));
query.addCriteria(Criteria.where("saqversion").is(saqVersion));
query.addCriteria(/* criteria on questionTab */);

最佳答案

query.addCriteria(Criteria.where("questionTab.Secure Network").exists(true));

需要注意的是,它会根据条件为您提供完整的文档,因此您必须从文档中过滤掉其他类型的 QuestionTab。

另一种方式是聚合,但我认为在应用程序层上处理可能更可取。

关于java - 列表列表中的 Spring Mongo 标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45477100/

相关文章:

java - Android、Java 和 2d 绘图

java - 创建类似于 WCF 的 JSON/XML REST Web 服务的最佳 Java 方式是什么?

ubuntu 中的 PHP 扩展路径

filter - 基于嵌入文档计数的MongoDB查询

mongodb - 计数查询在 mongodb 中给出具有相同时间范围的不同结果

java - 从java列表中检索一定数量的项目进行处理

java - 获得 Future<T> 对象的进度的能力

java - Data Nucleus 带有注释的多对多属性关系

java - Spring 发布订阅?

java - 如何使用FtpInboundFileSynchronizer自动删除本地文件?