关于mongodb Criteria语句的复杂查询
mongo数据库得益于他的可拓展性,可以供我们存储许多文本类数据而不用预先进行定义。
但是有时候在我们存储一条JSON类的数据的时候,我们不便于去查询数组内的数据,此时可以用elemMatch方法自定义一个子查询条件进行查询。
例如:
{
"name":"张三",
"age":40
family:[
{
"name":"张四",
"age":18
},
{
"name":"张五",
"age":19
},
{
"name":"陈晨",
"age":17
},
]
}
此时,对于数据中的family中的张四,张五我们可以这样查询
Criteria findFamily = Criteria.where("name").regex("张");
Criteria criteria = new Criteria().where("family").elemMatch(findFamily)
Query query = new Query(criteria);
List<JSONObject> list = mongoTemplate.find(query, JSONObject.class, title);
这样就能够查询到数据中family集合中含有张的数据信息~