我需要编写一个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()
方法接受整数。怎么办呢?
答案 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);