
今回はSpring Dataを使って、Mongo DBを検索する方法と検索条件の種類を紹介します。
以前当ブログで取り上げたSpring DataでMongo DBへ接続する基本的な設定を解説の続きです
このページでやること
Spring DataでMongo DBのfindクエリを発行する手順とオプションを解説します。
Mongo DBへの接続方法
こちらを参考にして下さい。
Spring DataでMongo DBへ接続する基本的な設定を解説
MongoDBのコレクション(テーブル)クラス
find対象のMongoDBのコレクションをデータオブジェクト化します。
Setter,Getterは必要ですが、ここでは省略しています。
@Document(collection = "history_collection") public class Dto { @Id private String id; @Field("title") private String title; }
条件なしでfindする方法
一番シンプルなfind方法です。
特に検索条件は指定していないので、全件取得されます。
@Autowired private MongoTemplate mongoTemplate; public List<Dto> search(String title) { Query query = new Query(); List<Dto> list = mongoTemplate.find(query, Dto.class); return list; }
先頭の1件だけをでfindで取得する方法
findOneを使えば先頭の1件のみを取得できます。
@Autowired private MongoTemplate mongoTemplate; public Dto search(String title) { Query query = new Query(); Dto dto = mongoTemplate.findOne(query, Dto.class); return dto; }
条件をつけてfindする方法
SQLでいうところのWhere条件の指定方法です。
個人的によく使うものをピックアップしました。
他にも細かい条件は指定できるので、ぜひCriteria.where(XXX)の仕様を確認して下さい。
@Autowired private MongoTemplate mongoTemplate; public List<Dto> search(String title) { Query query = new Query(); // 完全一致 query.addCriteria(Criteria.where("title").is(title)); // in句 query.addCriteria(Criteria.where("id").in("1","2")); // 比較、大小 query.addCriteria(Criteria.where("id").lte(1).gte(10)); List<Dto> list = mongoTemplate.find(query, Dto.class); return list; }
さいごに
Mongo DBはRDBMS並に細かく条件を指定して検索することができます。
Spring DataではMongo DBの条件指定方法はちゃんとカバーできているのでご安心を!
それでは!
この記事はお役に立てましたか?
お役に立てたことがあればシェアしていただけると嬉しいです!