嗨,我正在使用 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/