Mongo的優勢
1. 它會把數據文件映射到內存中,如果是讀操作,內存中的數據起到緩存的作用,如果是寫操作,內存還可以把隨機的寫操作轉換成順序的寫操作,總之可以大幅度提升性能。MongoDB并不干涉內存管理工作,而是把這些工作留給操作系統的虛擬內存管理器去處理,這樣做的好處是簡化了MongoDB的工作,但壞處是你沒有方法很方便的控制MongoDB占多大內存,幸運的是虛擬內存管理器的存在讓我們多數時候并不需要關心這個問題。
2. MongoDB的內存使用機制讓它在緩存重建方面更有優勢,簡而言之:如果重啟進程,那么緩存依然有效
配置:
spring.data.mongodb.uri=mongodb://test:123456@${ipAddr}:27017/mrqc?connectTimeoutMS=10000authSource=admin
版本:
dependency>
groupId>org.springframework.data/groupId>
artifactId>spring-data-mongodb/artifactId>
version>2.2.0.RELEASE/version>
/dependency>
錯誤實體類
MongoId設置為了String,需要設置為ObjectId類型
@Data
@Document("user")
public class User {
@MongoId
private String id;
@Field("userName")
private String userName;
}
正確實體類
@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同樣的語句就可以查詢出來了
User user = mongoTemplate.findById(new ObjectId(userId),User.class, "user");
到此這篇關于關于MongoTemplate通過id查詢為null的問題的文章就介紹到這了,更多相關MongoTemplate查詢為null內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- Spring Boot之搞定mongoTemplate的知識小結
- Node.js使用MongoDB的ObjectId作為查詢條件的方法
- PHP庫 查詢Mongodb中的文檔ID的方法
- python操作mongodb根據_id查詢數據的實現方法
- java查詢mongodb中的objectid示例