Spring DataでMongo DBをfind(検索)する方法

spring

今回は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の条件指定方法はちゃんとカバーできているのでご安心を!
それでは!