MongoTemplateがcollectionNameを使用してクエリーを行う際に注意すべき点
次のデータがuserテーブルに存在します.
ユーザーエンティティクラスUser.java
collectionNameでクエリーを行う場合、whereのフィールド名はデータベースのフィールドと同じになります.
クエリにcollectionNameを使用しない場合、whereのフィールド名はエンティティークラスのフィールド名と同じです.
{ "_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);
}