关于MongoTemplate通过id查询为null的问题

时间:2021-05-02

Mongo的优势

1. 它会把数据文件映射到内存中,如果是读操作,内存中的数据起到缓存的作用,如果是写操作,内存还可以把随机的写操作转换成顺序的写操作,总之可以大幅度提升性能。MongoDB并不干涉内存管理工作,而是把这些工作留给操作系统的虚拟内存管理器去处理,这样做的好处是简化了MongoDB的工作,但坏处是你没有方法很方便的控制MongoDB占多大内存,幸运的是虚拟内存管理器的存在让我们多数时候并不需要关心这个问题。

2. MongoDB的内存使用机制让它在缓存重建方面更有优势,简而言之:如果重启进程,那么缓存依然有效

配置:

? 1 spring.data.mongodb.uri=mongodb://test:123456@${ipAddr}:27017/mrqc?connectTimeoutMS=10000&authSource=admin

版本:

? 1 2 3 4 5 <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>2.2.0.RELEASE</version> </dependency>

错误实体类

MongoId设置为了String,需要设置为ObjectId类型

? 1 2 3 4 5 6 7 8 @Data @Document("user") public class User { @MongoId private String id; @Field("userName") private String userName; }

正确实体类

? 1 2 3 4 5 6 7 8 @Data @Document("user") public class User { @MongoId private ObjectId id; @Field("userName") private String userName; }

查询语句,如果mongoId类型为String那么就查询不出来,无论是直接使用
findById方法或者find(query)或者id传ObjectId对象,都是查不出来的,开始还以为配置错了,结果是因为Mongo的id都是ObjectId无法对应上实体类中的String类型。改成ObjectId同样的语句就可以查询出来了

? 1 User user = mongoTemplate.findById(new ObjectId(userId),User.class, "user");

到此这篇关于关于MongoTemplate通过id查询为null的问题的文章就介绍到这了,更多相关MongoTemplate查询为null内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/m0_37954663/article/details/112370718

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章