MongoTemplate查询以查找子数组大小大于的对象

时间:2017-11-12 12:20:36

标签: java spring-data mongotemplate

我需要编写一个Query,它可以在DB中查找子数组大小大于某些内容的对象。

我的对象看起来像:

{
    "_id" : ObjectId("sbg8732god78"),
    "studentIds" : [ "d3782gdo", "d8o3g7" ]
    ...
}

我需要找到studentIds数组大小大于n的所有对象。我正在寻找可用的方法,如:

Query query = new Query();
query.addCriteria(Criteria.where("studentIds").exists(true));
query.addCriteria(Criteria.where("studentIds").size().gt(0));

size()方法接受整数。怎么办呢?

1 个答案:

答案 0 :(得分:0)

实际上,您基于this answer寻找索引的存在。这要求您本质上做出一个>=表达式。例子:

// find where studentIds.size() >= 1
mongoTemplate.find(Query.query(Criteria.where("studentIds.0").exists(true);

// find where studentIds.size() >= 50
mongoTemplate.find(Query.query(Criteria.where("studentIds.49").exists(true);