一:环境搭建
环境搭建代码(SSM+mongdb)点击打开链接
二:验证mongoTemplate.find()
两个collection,分别是customer和order,其中order中有字段orderCode,customer中有一个document也有一个orderCode字段。下面是两个collection情况。


第一种情况:find(query, Entity.class)
写法:

结论:没有给出collectionName进行查询,Order实体中也有属性,orderCode。并且colletion是customer中有orderCode。没有查询到任何数据。
修改写法

结果:

第二种情况:find(query, Entity.class,collectionName)
写法:

结果:

刚好验证了,到指定表去查询。但是在第一种情况,第一种写法,它并没有获取到这样的结果,所以可以推断,如果没有加collectionName,则去Entity.class对应的collection去查询。比如Order.class,对应order collection,其他collection不管。
修改写法

结果:

推断:
1,mongoTemplate.find(query, Entity.class) ,默认去colletion为Entity进行查询。并把结果封装为Entitiy.查询满足条件的所有document.
2,mongoTemplate.find(query,Entity.class, collectionName);到指定的colletion中查询,并把结果封装为Entity.查询满足条件的所有document.
3,mongoTemplate.findOne(query, Entity.class)对比mongoTemplate.find(query, Entity.class);可以猜测,他们唯一的差别是一个查询满足条件的一个 document,而另个是满足条件的所有。
4,mongoTemplate.findOne(query, Entity.class, collectionName);到指定的collection中查询,并把结果封装为Entity,只要一个document.
5,mongoTemplate.findById(query, Entity.class);通过id到默认collection为Entity进行查询,并把结果封装为Entity.
6, mongoTemplate.findById(query, Entity.class, collectionName);通过id到指定的collection中去查询.
7, mongoTemplate.findAll(Entity.class);推测,到默认collection为Entity进行查询,并封装为Entity,无条件的,查询到collection中所有,哪怕有上亿个document?
8, mongoTemplate.findAll(Entity.class,collectionName);推测,到指定collection为colletionName中查询,无条件,查询所有,并封装成Entity.如果检测到条件查询时,页面一个条件也没有,则直接调用这个方法,不过得配合分页,查询指定的document条数。
本文详细介绍了使用MongoDB的mongoTemplate进行不同方式的数据查询方法。包括find和findOne等方法的使用,以及如何指定集合名称进行精确查询。

被折叠的 条评论
为什么被折叠?



