MongoTemplateがcollectionNameを使用してクエリーを行う際に注意すべき点

4912 ワード

次のデータがuserテーブルに存在します.
{ "_id" : ObjectId("5d8d7083f3d020df78dea61b"), "username" : "Dio", "password" : "e10adc3949ba59abbe56e057f20f883e" }

ユーザーエンティティクラスUser.java
@Data
@Document(collection = "user")
public class User{
	@Id
	private ObjectId id;
	private String username;
	private String password;
	
}

collectionNameでクエリーを行う場合、whereのフィールド名はデータベースのフィールドと同じになります.
public user getUserById(ObjectId id){
	Query query = new Query();
	query.addCriteria(Criteria.where("_id".is(id));
	User user = mongoTemplate.findOne(query,User.class,"user");
}

クエリにcollectionNameを使用しない場合、whereのフィールド名はエンティティークラスのフィールド名と同じです.
public user getUserById(ObjectId id){
	Query query = new Query();
	query.addCriteria(Criteria.where("id".is(id));
	User userr = mongoTemplate.findOne(query,User.class);
}