Springを使ってMongodbにアクセスする方法大全書——Spring Data MongoDB
19573 ワード
1.概要
Spring Data MongoDBはSpringフレームでmongodbにアクセスする神器であり、それを利用して非常に読みやすく、書いてもいいです.本文ではSpring Data MongoDBを使って、mongodbデータベースにアクセスするいくつかの方法を紹介します. QueryとCriteria類を使う JPA自動生成されたクエリ方法 @Queryを使ってJSONクエリ に基づいて注釈を行います.
始まる前に、まずマベント依存を導入する必要があります.
1.1 Maven追加の依存
Spring Data MongoDBを使用するには、以下の項目をpom.xmlファイルに追加する必要があります.
2.文書クエリ
Spring Dataを使ってMongoDBを調べる最も一般的な方法の一つはQueryとCriteria類を使うことであり、それらは非常にローカルオペレータに近い.
2.1 isクエリ
以下の例では、Erricという名前のユーザを探しています.
私たちのデータベースを見てみましょう.
正規表現はより柔軟で強力なクエリータイプです.これはMongoDB$regexを使用した標準を使用しており、このフィールドに適用されるこの正規表現のすべての記録を返す.
その役割はstartingWith、endingWith操作に似ています.例を見てみましょう.
名前をAで始めたすべてのユーザを探しています.これはデータベースの状態です.
$lt(小さい)演算子と$gt(大きい)です.
早く例を見てみましょう.20歳から50歳までの年齢のすべてのユーザーを探しています.
データベースは:
Sortは、結果の順序を指定するために使用されます.
まず-ここは既存のデータです.
改ページを使う簡単な例を見てみましょう.
これはデータベースの状態です.
3.生成された照会方法(Generated Query Methods)
検索方法はJPAの特性の一つで、Spring Data Mongodbでも使用できます.
2里の機能を実現するには、インターフェースで方法を宣言すればいいです.
findByタイプのクエリを探索することによって簡単に開始します.
以下は操作過程の簡単な例である.
3.3 Between
2.3と同様に、これは、ageGTとageLTの間の年齢のすべてのユーザを返します.
このより高級な例を見てみましょう.生成されたクエリーのための2つのタイプの修飾子を組み合わせます.
名前にアルファベットAが含まれているすべてのユーザーを検索します.年齢順に結果を並べます.
もし私たちは方法の名前や条件で検索を表現できないなら、より低いレベルのことができます.@Queryを使ってコメントします.
この注釈により、元のクエリーを指定します.Mongo JSONクエリ文字列として.
4.1 FindBy
まず簡単なのを見てみましょう.どのようにしてタイプを探す方法の第一になりますか?
4.2$regex
正規表現駆動のクエリーを見てみましょう.もちろん2.2と3.2と同じ結果が得られます.
今から私達はltとgtクエリを実現します.
本論文ではSpring Data MongoDBを用いたクエリーの一般的な方法を検討した.
本明細書の例は、 spring-data-mongodbはここでダウンロードします.
本文はAガイドto Queries in Spring Data MongoDBを参考にします.
作者:Jadepeng出典:jqpengの技術メモ帳――http://www.cnblogs.com/xiaoqiあなたのサポートは博主にとって最大の励ましです.真剣に読んでくれてありがとうございます.この文章の著作権は作者の所有になります.転載を歓迎しますが、作者の同意なしにこの声明を保留しなければなりません.そして、文章のページの明確な位置で原文の接続を提供します.そうでなければ、法律責任を追及する権利を保留します.
Spring Data MongoDBはSpringフレームでmongodbにアクセスする神器であり、それを利用して非常に読みやすく、書いてもいいです.本文ではSpring Data MongoDBを使って、mongodbデータベースにアクセスするいくつかの方法を紹介します.
始まる前に、まずマベント依存を導入する必要があります.
1.1 Maven追加の依存
Spring Data MongoDBを使用するには、以下の項目をpom.xmlファイルに追加する必要があります.
<dependency>
<groupId>org.springframework.datagroupId> <artifactId>spring-data-mongodbartifactId> <version>1.9.6.RELEASEversion> dependency>
バージョンは必要に応じて選択します.2.文書クエリ
Spring Dataを使ってMongoDBを調べる最も一般的な方法の一つはQueryとCriteria類を使うことであり、それらは非常にローカルオペレータに近い.
2.1 isクエリ
以下の例では、Erricという名前のユーザを探しています.
私たちのデータベースを見てみましょう.
[
{
"_id" : ObjectId("55c0e5e5511f0a164a581907"),
"_class" : "org.baeldung.model.User",
"name" : "Eric", "age" : 45 }, { "_id" : ObjectId("55c0e5e5511f0a164a581908"), "_class" : "org.baeldung.model.User", "name" : "Antony", "age" : 55 } }]
検索コードを見てみましょう.Query query = new Query();
query.addCriteria(Criteria.where("name").is("Eric"));
List users = mongoTemplate.find(query, User.class);
予想通り、この論理は戻ります.{
"_id" : ObjectId("55c0e5e5511f0a164a581907"),
"_class" : "org.baeldung.model.User",
"name" : "Eric", "age" : 45 }
2.2正則クエリ正規表現はより柔軟で強力なクエリータイプです.これはMongoDB$regexを使用した標準を使用しており、このフィールドに適用されるこの正規表現のすべての記録を返す.
その役割はstartingWith、endingWith操作に似ています.例を見てみましょう.
名前をAで始めたすべてのユーザを探しています.これはデータベースの状態です.
[
{
"_id" : ObjectId("55c0e5e5511f0a164a581907"),
"_class" : "org.baeldung.model.User",
"name" : "Eric", "age" : 45 }, { "_id" : ObjectId("55c0e5e5511f0a164a581908"), "_class" : "org.baeldung.model.User", "name" : "Antony", "age" : 33 }, { "_id" : ObjectId("55c0e5e5511f0a164a581909"), "_class" : "org.baeldung.model.User", "name" : "Alice", "age" : 35 } ]
クエリーを作成します.Query query = new Query();
query.addCriteria(Criteria.where("name").regex("^A"));
List users = mongoTemplate.find(query,User.class);
この運転は2つのレコードに戻ります.[
{
"_id" : ObjectId("55c0e5e5511f0a164a581908"),
"_class" : "org.baeldung.model.User",
"name" : "Antony", "age" : 33 }, { "_id" : ObjectId("55c0e5e5511f0a164a581909"), "_class" : "org.baeldung.model.User", "name" : "Alice", "age" : 35 } ]
以下はもう一つの簡単な例です.今回の検索名はcで終わるすべてのユーザです.Query query = new Query();
query.addCriteria(Criteria.where("name").regex("c$"));
List users = mongoTemplate.find(query, User.class);
結果は:{
"_id" : ObjectId("55c0e5e5511f0a164a581907"),
"_class" : "org.baeldung.model.User",
"name" : "Eric", "age" : 45 }
2.3 LTとGT$lt(小さい)演算子と$gt(大きい)です.
早く例を見てみましょう.20歳から50歳までの年齢のすべてのユーザーを探しています.
データベースは:
[
{
"_id" : ObjectId("55c0e5e5511f0a164a581907"),
"_class" : "org.baeldung.model.User",
"name" : "Eric", "age" : 45 }, { "_id" : ObjectId("55c0e5e5511f0a164a581908"), "_class" : "org.baeldung.model.User", "name" : "Antony", "age" : 55 } }
クエリーを作成:Query query = new Query();
query.addCriteria(Criteria.where("age").lt(50).gt(20)); List users = mongoTemplate.find(query,User.class);
結果-年齢が20以上で、50未満のすべてのユーザ:{
"_id" : ObjectId("55c0e5e5511f0a164a581907"),
"_class" : "org.baeldung.model.User",
"name" : "Eric", "age" : 45 }
2.4結果の並べ替えSortは、結果の順序を指定するために使用されます.
まず-ここは既存のデータです.
[
{
"_id" : ObjectId("55c0e5e5511f0a164a581907"),
"_class" : "org.baeldung.model.User",
"name" : "Eric", "age" : 45 }, { "_id" : ObjectId("55c0e5e5511f0a164a581908"), "_class" : "org.baeldung.model.User", "name" : "Antony", "age" : 33 }, { "_id" : ObjectId("55c0e5e5511f0a164a581909"), "_class" : "org.baeldung.model.User", "name" : "Alice", "age" : 35 } ]
並べ替えを実行した後:Query query = new Query();
query.with(new Sort(Sort.Direction.ASC, "age"));
List users = mongoTemplate.find(query,User.class);
これはお問い合わせの結果です.年齢別によく並べられています.[
{
"_id" : ObjectId("55c0e5e5511f0a164a581908"),
"_class" : "org.baeldung.model.User",
"name" : "Antony", "age" : 33 }, { "_id" : ObjectId("55c0e5e5511f0a164a581909"), "_class" : "org.baeldung.model.User", "name" : "Alice", "age" : 35 }, { "_id" : ObjectId("55c0e5e5511f0a164a581907"), "_class" : "org.baeldung.model.User", "name" : "Eric", "age" : 45 } ]
2.5ページ改ページを使う簡単な例を見てみましょう.
これはデータベースの状態です.
[
{
"_id" : ObjectId("55c0e5e5511f0a164a581907"),
"_class" : "org.baeldung.model.User",
"name" : "Eric", "age" : 45 }, { "_id" : ObjectId("55c0e5e5511f0a164a581908"), "_class" : "org.baeldung.model.User", "name" : "Antony", "age" : 33 }, { "_id" : ObjectId("55c0e5e5511f0a164a581909"), "_class" : "org.baeldung.model.User", "name" : "Alice", "age" : 35 } ]
現在、クエリーロジックは、2サイズのページだけが必要です.final Pageable pageableRequest = new PageRequest(0, 2);
Query query = new Query(); query.with(pageableRequest);
結果:[
{
"_id" : ObjectId("55c0e5e5511f0a164a581907"),
"_class" : "org.baeldung.model.User",
"name" : "Eric", "age" : 45 }, { "_id" : ObjectId("55c0e5e5511f0a164a581908"), "_class" : "org.baeldung.model.User", "name" : "Antony", "age" : 33 } ]
このAPIのすべての詳細を探るために、ここはQueryとCriteria類の文書です.3.生成された照会方法(Generated Query Methods)
検索方法はJPAの特性の一つで、Spring Data Mongodbでも使用できます.
2里の機能を実現するには、インターフェースで方法を宣言すればいいです.
public interface UserRepository
extends MongoRepository<User, String>, QueryDslPredicateExecutor<User> { ... }
3.1 FindByXfindByタイプのクエリを探索することによって簡単に開始します.
List findByName(String name);
前のセクションと同じ2.1-クエリーは同じ結果を持ち、指定された名前を持つすべてのユーザを検索します.List<User> users = userRepository.findByName("Eric");
3.2 StartingWith and endingWith.以下は操作過程の簡単な例である.
List findByNameStartingWith(String regexp);
List findByNameEndingWith(String regexp);
実際にこの例を使うと、もちろんとても簡単です.List<User> users = userRepository.findByNameStartingWith("A");
List<User> users = userRepository.findByNameEndingWith("c");
結果はまったく同じです.3.3 Between
2.3と同様に、これは、ageGTとageLTの間の年齢のすべてのユーザを返します.
List findByAgeBetween(int ageGT, int ageLT);
List users = userRepository.findByAgeBetween(20, 50);
3.4 LikeとOrderByこのより高級な例を見てみましょう.生成されたクエリーのための2つのタイプの修飾子を組み合わせます.
名前にアルファベットAが含まれているすべてのユーザーを検索します.年齢順に結果を並べます.
List<User> users = userRepository.findByNameLikeOrderByAgeAsc("A");
結果:[
{
"_id" : ObjectId("55c0e5e5511f0a164a581908"),
"_class" : "org.baeldung.model.User",
"name" : "Antony", "age" : 33 }, { "_id" : ObjectId("55c0e5e5511f0a164a581909"), "_class" : "org.baeldung.model.User", "name" : "Alice", "age" : 35 } ]
4.JSONの照会方法もし私たちは方法の名前や条件で検索を表現できないなら、より低いレベルのことができます.@Queryを使ってコメントします.
この注釈により、元のクエリーを指定します.Mongo JSONクエリ文字列として.
4.1 FindBy
まず簡単なのを見てみましょう.どのようにしてタイプを探す方法の第一になりますか?
@Query("{ 'name' : ?0 }")
List findUsersByName(String name);
この方法は名前でユーザー-プレースホルダを返すべきですか?0参照方法の最初のパラメータです.4.2$regex
正規表現駆動のクエリーを見てみましょう.もちろん2.2と3.2と同じ結果が得られます.
@Query("{ 'name' : { $regex: ?0 } }")
List findUsersByRegexpName(String regexp);
使い方もまったく同じです.List<User> users = userRepository.findUsersByRegexpName("^A");
List<User> users = userRepository.findUsersByRegexpName("c$");
4.3.$ltと$gt今から私達はltとgtクエリを実現します.
@Query("{ 'age' : { $gt: ?0, $lt: ?1 } }")
List findUsersByAgeBetween(int ageGT, int ageLT);
5.結論本論文ではSpring Data MongoDBを用いたクエリーの一般的な方法を検討した.
本明細書の例は、 spring-data-mongodbはここでダウンロードします.
本文はAガイドto Queries in Spring Data MongoDBを参考にします.
作者:Jadepeng出典:jqpengの技術メモ帳――http://www.cnblogs.com/xiaoqiあなたのサポートは博主にとって最大の励ましです.真剣に読んでくれてありがとうございます.この文章の著作権は作者の所有になります.転載を歓迎しますが、作者の同意なしにこの声明を保留しなければなりません.そして、文章のページの明確な位置で原文の接続を提供します.そうでなければ、法律責任を追及する権利を保留します.