問題タブ [spring-data-mongodb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
12 に答える
29217 参照

mongodb - Spring データ MongoDb: MappingMongoConverter remove _class

デフォルトのMappingMongoConverterは、データベース内の各オブジェクトにカスタム タイプ キー (「_class」) を追加します。したがって、Person を作成すると、次のようになります。

そしてそれをdbに保存します:

mongo の結果のオブジェクトは次のようになります。

質問:

  1. Person クラスを別の名前空間に移動すると、どのような影響がありますか?

  2. 「_class」キーでオブジェクトを汚染しないことは可能ですか? Person クラス専用の独自のコンバーターを作成せずに?

0 投票する
2 に答える
18753 参照

java - Spring Data MongoDB リポジトリで日付を照会するにはどうすればよいですか?

私のドメイン オブジェクト -

そして私はPersonRepositoryを持っています

特定の日付以降に生まれたすべての人を取得しようとしています。しかし、それはうまくいきません。私は何が欠けていますか?mongodb コンソールの「born」の日付形式は次のようになります

data-jpa ソースで、これの単体/統合テストを探してみました。見つかりませんでした。誰かが私にそれを指摘できますか?

0 投票する
5 に答える
14539 参照

mongodb - Spring Data Mongodb を使用して、コレクション全体をプルして反復せずにフィールドの最大値を取得することは可能ですか?

を使用して、 ormongoTemplate.find()を呼び出すことができるクエリを指定します。.limit().sort()

.limit()オブジェクトを返しますQueryオブジェクトを
.sort()返しSortます

これを考えると、Query().limit(int).sort() と言えますが、これは目的の操作を実行せず、限られた結果セットを並べ替えるだけです。

.sort() が Sort() を返すため、Query().sort().limit(int) を呼び出すことはできません。

では、Spring Data を使用して、mongoDB シェルに示されているように次のことを実行するにはどうすればよいですか? まだ見つけていない生のクエリを渡す方法があるのではないでしょうか?

必要に応じて Paging インターフェイスを拡張しても問題ありません...まったく役に立たないようです。ありがとう!

0 投票する
4 に答える
1713 参照

spring-data-mongodb - 春のmongoからdropDatabase

統合テストの前に、mongo にデータベースをドロップしたいと思います。春のmongoでこれを行うことは可能ですか?

今のところ利用できない場合は、com.mongodb.DB オブジェクトを春の mongo から何らかの方法でフェッチすることは可能ですか?

0 投票する
4 に答える
30180 参照

java - SpringのMongoTemplateクラスとQueryクラスを使用してフィールドのサブセットを取得するにはどうすればよいですか?

MongoTemplate次のコンソールコマンドを実行して、フィールドのサブセットのみが入力されているが、Springのクラスを使用しているすべての行を返すことができるようにしたいと思います。

コンソールコマンド

MongoTemplate

射影(サブセット)クエリに関する情報は、MongoDBのマニュアルに記載されています。

0 投票する
2 に答える
16560 参照

java - spring-data-mongo - オプションのクエリ パラメータ?

JSON ベースのクエリ メソッドで spring-data mongo を使用していますが、検索クエリでオプションのパラメーターを許可する方法がわかりません。

たとえば、次の機能があるとします

-しかし、メソッドにNULL値が渡された場合、名前の正規表現の一致を適用したり、日付範囲の制限を適用したりしたくありませんでした。

現時点では、mongoTemplate を使用してクエリを作成する必要があるようです。

代替手段はありますか - または mongoTemplate を使用するのが最良の選択肢ですか?

ありがとう

0 投票する
6 に答える
37666 参照

java - Spring-data-mongodbは1つのMongoインスタンスで複数のデータベースに接続します

最新のspring-data-mongodb(1.1.0.M2)と最新のMongoドライバー(2.9.0-RC1)を使用しています。アプリケーションに接続している複数のクライアントがあり、同じMongoサーバーでそれぞれに独自の「スキーマ/データベース」を提供したいという状況があります。ドライバーを直接使用している場合、これを達成するのはそれほど難しい作業ではありません。

ほら、簡単。ただし、spring-data-mongodbでは、複数のデータベースを簡単に使用することはできません。への接続を設定するための推奨される方法は、 AbstractMongoConfigurationクラスMongoを拡張することです。

次のメソッドをオーバーライドしていることがわかります。

したがって、1つのデータベース名を使用する必要があります。次に構築するリポジトリインターフェイスは、SimpleMongoRepositoryクラスに渡されるMongoTemplate内のデータベース名を使用します。

いったいどこに複数のデータベース名を付けるのでしょうか?複数のデータベース名、複数MongoTempateのs(データベース名ごとに1つ)、および他の複数の構成クラスを作成する必要があります。それでも、リポジトリインターフェイスで正しいテンプレートを使用することはできません。誰かがそのようなことを試みたなら、私に知らせてください。私がそれを理解したら、私はここに答えを投稿します。

ありがとう。

0 投票する
2 に答える
1362 参照

java - Spring Data MongoDB リポジトリのクエリ連結はどのように機能しますか?

findByName(…)すべてが正常に動作するように、Spring Data リポジトリのメソッドを作成すると。ただし、findByField1AndName(…)Spring Data MongoDB を使用すると、最後のパラメーターに対してのみクエリが生成されます。

しかし、私はそれが生成されると予想しました

どうしたの?助けてください。

UPD1:誰かがこのような問題を抱えている場合は、@Query アノテーションを使用して手動でクエリを作成できます。以下の例をご覧ください。

0 投票する
1 に答える
7590 参照

spring - MongoDB ライフサイクル イベントの MongoTemplate へのアクセス

Spring Data Mongodb を使用して、mongodb ドキュメントのバージョン管理システムを実装しようとしています。Mongo のライフサイクル イベントを活用しようと思った

春の Mongo ライフサイクル イベント

私がやりたかったのはonBeforeSave、元のバージョンのドキュメントを聞いて取得し、2 つの間の差分を取得することでした。

私が抱えている問題は、mongoOperations への参照を取得できないことです。循環参照を作成し続けます。私が@Autowireかどうか:

オートワイヤー注入

モンゴの設定:

リスナー:

またはセッターインジェクションを使用する

セッター注入

モンゴの設定:

リスナー:

ライフサイクル イベントでドキュメントのバージョン管理を処理することは、私にとって理にかなっています。PHP/Doctrine/Mongoで同様のことをしました

Doctrine/PHP での方法

Doctrine の場合、ライフサイクル コールバックで Document Manager への参照を取得します。Spring Dataでこれと同じことを行う方法の手がかりはありますか?

0 投票する
2 に答える
3107 参照

java - Spring Data MongoDB Cross-Store プラグインと JPA PrePersist および PreUpdate

次の設定のアプリケーションがあります。

Java 6.0 Spring Data JPA 1.1.0.RELEASE Spring Data MongoDB 1.0.2.RELEASE Spring Data MongoDB Cross-Store 1.0.2.RELEASE Hibernate JPA 2.0

このアプリケーションには、JPA PrePersist、PreUpdate、PostPersist、および PostUpdate アノテーションを使用するいくつかのクラスがあります。以下に例を示します。

クロスストア プラグインの AspectJ ウィービングを有効にするとすぐに、Spring アプリケーション コンテキストがエラーでロードに失敗します。

エラーの根本的な原因は、Aspect MongoDocumentBacking が追加の PrePersist メソッドと PreUpdate メソッドをエンティティ クラスに織り込んでいることであることがわかりました。クラスにはこれらのアノテーションを持つメソッドがすでにあるため、Hibernate Entity Manager はこれらのクラスの検証に失敗します。

JPA アノテーションを使用する既存のコードを持つアプリケーションでクロスストア プラグインを使用する方法に関するガイダンスはありますか?