我的数据结构看起来像这样:
Teams:
{ name:"team1",
users:[
{
age:45,
licence:true
},
{
age:70,
licence:false
}
]
},
..other teams..
字符串
我想返回至少有一个人的团队= 70岁谁拥有许可证。我目前的代码看起来像这样:
criteria = Criteria.where("user.age").(70).and("user.licence").is(true)
Query q = new Query(criteria);
... perform q ...
型
问题是,这种标准识别是否存在somone = 70和somone with license(不是somone with license和70同时),所以在我的情况下,它会返回true,即使它不是。我不知道我如何执行这种(简单的)查询。我在文档中寻找它,但没有成功:(
2条答案
按热度按时间watbbzwu1#
使用
$elemMatch
运算符匹配子文档数组中的子文档的多个字段。原始查询
字符串
Spring条件
型
qgelzfjb2#
使用addCriteria(...)方法
你的情况是:
字符串
很抱歉它不是普通的Java语言。但是把它变成Java应该不难