問題タブ [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.
spring-data - Spring Data で MongoRepository を使用して $push を行うにはどうすればよいですか?
次のような MongoDB 構造があります。
Spring Data MongoDB パッケージを使用してこのデータにアクセスしています。主にデータへの書き込みがあるため、ネイティブの「$push」機能を使用して「イベント」を「レコード」に追加したいのですが、フェッチせずに MongoRepository でそれを行う方法がわかりません。レコード全体をプッシュしてから保存しますか?
MongoRepository を使用する場合、実際に具体的な実装を行うことはありません。Spring は、アノテーションまたはメソッド自体の名前に基づいてすべてを処理します
アップデート
リポジトリにカスタム メソッドを実装し、MongoTemplate を使用して手動で行うのが正しい方法でしょうか?
例:
FooRepository.java
FooRepositoryCustom.java
FooRepositoryImpl.java
mongodb - Mongodb - 春のアプリケーションを介してデータベース ユーザーを追加する方法
mongodb にデータベース認証を実装したいと考えています。
そのためには、最初に管理者ユーザーを作成してから、mongodb クライアント シェルを介して (手動または JavaScript ファイルを使用して) データベースごとに個別のユーザーを作成する必要があることがわかりました。
春のアプリケーション自体から個々のデータベースにユーザーを追加できるかどうか疑問に思っていましたが、これを行うための有用なポインターは得られませんでした。これが可能であれば、アプリケーション自体がユーザーを作成しているため、アプリケーションは常にデータベースにアクセスできますが、外部アクセスは引き続きブロックされるため、このアプローチは間違っています。
これをどのように達成できるか、またはそれが間違ったアプローチであるかどうかを教えてください。
spring - Spring-datamongodbリポジトリと継承
私はそのようなクラスユーザークラスを作成しました:
ICredentialsインターフェース:
1つの実装:
これで、資格情報からユーザーを見つけるためのリポジトリを作成しました。
Springはこれをログに記録します(両方のリクエストに対して):org.springframework.data.mongodb.core.MongoTemplate [DEBUG]クエリを使用して検索:{ "credentials" : { "login" : "test" , "password" : "test"}}
フィールド:クラスのnull:クラスxxx。コレクション内のユーザー:user
そして、何も見つかりませんでした...「_class」属性が書き込まれていないため、何も見つからなかったようです。私は良い要求は次のようにすべきだと思います:
{ "credentials" : {
"_class":"xxx.LoginPassword"
, "login" : "test" , "password" : "test"}}
私が間違っていることはありますか?私は何かが足りないのですか?
ありがとう
私はspringmvc3.2.0、spring-data-commons-core 1.4.0、spring-data-mongodb 1.1.1、mongo-java-driver 2.10.1を使用しています(すべてのライブラリを最新バージョンに更新して、確実に更新していますすでに修正されたバグではありませんでしたが、成功しませんでした)
java - MongoTemplate 条件クエリの翻訳が正しくないようです
ネストされたオブジェクトを持つコレクションをクエリしています。ドメイン モデルは次のようになります。
次のような基準を使用してクエリを実行しています。
私が使用して作成する
次のように出力できるため、基準オブジェクトには他のものが含まれていないことがわかります。
パッケージ org.springframework.data.mongodb.core のデバッグ ロギングを有効にすると、実際にサーバーに送信されるクエリは次のようになります。
編集:私のドキュメントには「フィールド」と呼ばれるフィールドが含まれており、コードまたはmongoTemplate/spring-dataで実際にフィールドを検索しているようです:null。fields: null は実際には返されるフィールド名のセットを参照しているため、MongoTemplate のログ行は私を混乱させました。
では、プロパティ「フィールド」が null のドキュメントのみを返す spring-data なしで、その uuid に一致するドキュメントを検索するにはどうすればよいでしょうか?
その間、ドキュメント構造を変更できないため、これを回避する方法をまだ調査しています...
mongodb - Mongo の Spring Data が ID を ObjectId に変換するのを防ぐ
既存のデータベースで Mongo の Spring Data を使用しています。前のアプリケーションでは、ID に ObjectId の代わりにプレーン文字列を使用していました。
私の問題は、Spring Data が文字列を ObjectId に変換することを主張しているため、ID によるすべてのクエリが失敗することです。
たとえば、私が実行するときrepository.findOne('')
、実行されるクエリは{ "_id" : { "$oid" : "50cf9f34458cf91108ceb2b4"}}
それがあるべきときです{ "_id" : "50cf9f34458cf91108ceb2b4" }
Spring Data が文字列 ID を ObjectId に変換するのを回避する方法はありますか?
ありがとう!
ディエゴ
mongodb - @Query アノテーションを使用して mongodb で (コレクション内の) すべてのドキュメントを検索するにはどうすればよいですか?
この@Query
アノテーションにより、特定のメソッドに対して MongoDB クエリを指定できるようになります。例は次のとおりです@Query("{ 'firstname' : ?0 }")
。@Query
しかし、「where」句を指定せずにすべてのドキュメントを検索したいだけの場合、パラメータはどうすればよいでしょうか? 以下のコードは、私が達成しようとしていることを示していますが、おそらく問題は単純です: すべてのドキュメントを取得するための JSON/BSON クエリは何ですか?
spring - spring-data mongodb から SimpleMongoRepository を拡張するには?
すべての DAO で拡張できる BaseDAO インターフェイスを作成しようとしています。プロジェクトは、mongodb で spring-data を使用します。問題は、すべての個々の DAO が MongoRepository を拡張し、実装クラスを作成しない場合、すべてが正常に機能することです。しかし、ジェネリックを使用して MongoRepository を BaseDAO インターフェイスに追加しようとすると、SimpleMongoRepository をインスタンス化するために必要なパラメーターが null であるため、アプリが機能しなくなります。これは私がこれまでに持っているコードです:
BaseDAO.java
BaseDAOImpl.java
UserDAO.java
UserDAOImpl.java
applicationContext.xml
App.java
したがって、実行すると、mongoTemplate と entityInformationCreator の両方が null であるため、BaseDAOImpl で NPE が取得されます。それらをロードするにはどうすればよいですか?Spring MongoDB リファレンス ドキュメントも参照しましたが、ほとんどの場合、他の種類のリポジトリのドキュメントに従うように指示されています。私がオンラインで見つけた唯一のものは、ファクトリ Bean を作成することでした。だから私もそれを試しました:
MongoRepoFactoryBean.java
applicationContext.xml を次のように変更しました。
しかし、それもうまくいきません。JavaConfig も試してみましたが、アノテーションを使用して構成を行うときに factory-class を設定する方法がわかりません。私は何を間違っていますか?SimpleMongoRepository にはデフォルトのコンストラクターが付属していません。静的フィールドの注入に問題がありますか?
java - オブジェクトをリハイドレートするときに、spring-data-mongodb はコンストラクターをどのように正確に処理しますか?
http://static.springsource.org/spring-data/data-mongo/docs/1.1.0.RELEASE/reference/html/#mapping-chapterを読みましたが、次の基本的な春のデータに対する答えが見つかりません- mongodb オブジェクト マッピングの質問:
MongoDB から次のクラスのインスタンスをロードすると:
MongoDB ドキュメントのTest(String str1)
最上位フィールドにある値でコンストラクターが呼び出されることを理解しています。このコンストラクターは、 a を明示的str1
に宣言することと同等であると想定しています。@PersistenceConstructor
str2, date3
しかし、この場合、フィールドはどうなるでしょうか? コンストラクターの一部ではないすべてのフィールドはまだ初期化されますか?str2, date3
それとも、のみを使用する PeristenceConstructorstr1
が見つかったため、値が失われますか?
そして最後に、これはどのような順序で起こりますか?コンストラクターによって設定され、その後、以前に永続化されたフィールドによって上書きされますdate3
か、またはその逆ですか?
java - 複雑なMongoDBクエリ-サブドキュメント
図のようにドキュメントを構成しています
バージョンが0より大きいmoduleDataItemsのコレクションを取得したいと思います。
これは私の試みです:
私は正しいことをしていないと確信しています。結果にDataItemが含まれていません。
クラスはjson構造を表します。
どんな助けでも大歓迎です。
ありがとう
spring - サブドキュメントの SD MongoDB ポリモーフィズム
spring-data-mongodb を使用して Java でアプリの開発を開始したところ、解決できない問題に遭遇しました。
次のようなドキュメント Bean をいくつか用意します。
そして、次のような検索を呼び出すだけのメソッドを持つリポジトリ クラスがあります。
Bar の保存は問題なく機能します。Foo と Bar の両方の「_class」属性とともに mongo に保存されます。ただし、Foo の属性で検索すると、次のような例外がスローされます。
クエリのどこにもサブドキュメントの具象型が指定されておらず、Bar のエンティティ情報は foo の型が Foo (FooImpl ではない) であり、プロパティを持つことができないため、掘り下げた後、これはある程度理にかなっています。インターフェースだからです。
私の質問は次のとおりです。サブドキュメント タイプを具象タイプとして宣言せずに、この問題を指定または回避する方法はありますか?
数日間グーグルでドキュメントとAPIとソースコードを見てきましたが、それを行う明確な方法が見つかりません. よろしくお願いします。
どうもありがとうございました。