MongoDB(spring)Criteria -检查是否存在具有属性的嵌套对象

z2acfund  于 2023-11-16  发布在  Spring
关注(0)|答案(2)|浏览(100)

我的数据结构看起来像这样:

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,即使它不是。我不知道我如何执行这种(简单的)查询。我在文档中寻找它,但没有成功:(

watbbzwu

watbbzwu1#

使用$elemMatch运算符匹配子文档数组中的子文档的多个字段。

原始查询

{
  "users": {
    "$elemMatch": {
      "age": 70,
      "licence": true
    }
  }
}

字符串

Spring条件

Criteria.where("users")
        .elemMatch(Criteria.where("age").is(70).and("licence").is(true));

qgelzfjb

qgelzfjb2#

使用addCriteria(...)方法
你的情况是:

val query = Query(
                Criteria.where("users.age").isEqualTo(70)
        ).addCriteria(
                Criteria.where("users.licence").isEqualTo(false)
        )

//Then perform query

字符串
很抱歉它不是普通的Java语言。但是把它变成Java应该不难

相关问题