問題タブ [morphia]
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.
mongodb - Morphiaを使用してMongoのすべてのフィールドを単純に更新することは可能ですか?
Mongo と Morphia をマッピングしています。Morphia には、ドキュメント内の更新を変更されたフィールドのみに適用できるようにするための多くの最適化があります。
ありがたいのですが、現時点では、最適化されていないケースが必要です。エンティティを保存したいだけで、どのフィールドが変更されたかを心配する必要はありません。
もちろん、単純に save() を呼び出すこともできますが、これはあたかも新しいオブジェクトを作成しているかのようにライフサイクル メソッドを呼び出します。
おそらくそれが答えです: save() そして、これが新しいエンティティの作成ではなく「再保存」であることを検出するのに十分スマートなライフサイクルメソッドを持っています。
より良いアプローチがあれば、それについて聞いていただければ幸いです。
java - Morphia クエリを再利用するための適切なパターンはありますか?
次のコードでいくつかの周波数カウンターをインクリメントするコードをプロファイリングしています。
クエリの作成に実行時間の 50% 近くが費やされており、その作業を何とか再利用したいと考えています。query
およびops
オブジェクトを ThreadLocal に保存し、query.field("text").equal(text)
もう一度呼び出して「テキスト」フィールドを置き換えるのは安全ですか? また、検証が合計時間の約 30% を占めているようです。
mongodb - enum を mongoDB に保存する
enum を mongoDB に保存する方法はありますか? 次のようなものを保存したい:
java - Playframework、JSONからモデルへの変換(Gsonを使用)、モデルの保存に失敗
JSON文字列をモデルクラスに変換しようとしています。PlayFramework内でモルヒネを使用しています。
関連するコード行は次のとおりです。
しかし、このコードは次の例外をスローするため、私は何か間違ったことをしていると思います。
次の行がこの例外をスローしているようです。
モデルのコードは次のとおりです。
私の質問は、これをどのように修正できるか、またはjson入力に基づいてモデルインスタンスを作成する必要があるかどうかです。
java - Morphia:埋め込みオブジェクトのリストでnull値を検索します
埋め込まれたエンティティのリストがあります:
このリストでは、特定の属性(と呼びましょうfoo
)を持ち、別の属性()を持たない埋め込みエンティティを検索しますbar
。したがって、Javaではnull以外であり、MongoDBでは存在しfoo
ない必要があります。bar
次のコードを試しました(Entity
リストを含むUUIDがあります)。
foo
これは、リストが空であるか、単一のエントリがある場合(値があり、bar
まだ存在しない場合)に正しく機能します。ただし、属性に値があるとすぐbar
に、クエリは間違った結果を返します。だから私はクエリを探しています。それはすべての埋め込まれたエンティティを繰り返し処理し、欠落しているものをすべて起動しますbar
。それは可能ですか?
データ例:
PS:。でも同じ結果が得られ.field("embedded.bar").hasThisOne(null)
ます。
PPS:更新操作にクエリを使用したいので、リスト要素を手動で繰り返すことは実際にはオプションではありません。
PPS:これはMorphiaのバグだと思います-回避策については、以下の私の回答(https://stackoverflow.com/a/9705175/573153)を参照してください
mongodb - この js 地理空間クエリをモルフィアで複製するにはどうすればよいですか?
mongodb での地理空間データのクエリは、シェル スクリプトを介して十分に簡単に見えますが、モルフィア (プレイモーフィア) でいくつかのコードを複製しようとしています。
特定の半径内のすべてのポイントを取得すると、ドキュメントは次のように述べています。
私の Peak モデルのコードは次のとおりです。
それは機能しますが、ds().find() を使用して何か間違ったことをしていますか? Peak.find.. などのモデルを使用してこれを行うよりエレガントな方法はありますか? ありがとう!
java - Morphia を使用して、アノテーションのない pojo をマップするにはどうすればよいですか?
私が制御できないクラスが存在します:
この人物を Mongo に保持したいのですが、このクラス定義を@Entity
他のアノテーションで変更することはできません。
Mongo のドキュメントを次のようにしたいと思います。
これにアプローチする最良の方法は何ですか?コンバータ?延長クラス?クラスを含む?
java - ネストされたドキュメントの利用可能な部分データに基づくクエリ (morphia、mongoDB)
ドキュメント構造 (説明用)
従業員
クエリ -
Addresses -> street (type String) と Addresses -> country -> name (type String) しかありません。そして、この基準に一致するすべての従業員を取得したいと考えています。
結果を取得しません (実際に一致する場合)。部分的な「国」ドキュメントの一致が原因のようです。Country のすべてのフィールドに 入力すると、期待どおりの結果が得られます。
質問 #1 : 上記の回避策はありますか?
質問 #2 : 住所は配列であり、複数の (address#street, country#name) ペアを取得できます。また、特定のペアに一致する従業員のリストが必要です。何かのようなもの:
注:アドレスの一致を次のように分類できます
しかし、これは Employee where street="bla bla" and country.name!="hoo" in address#1 と、street!="bla bla" and country.name="hoo" address #2 に一致します。あなたは要点を理解します。そのような従業員を返してほしくありません。
これが可能かどうか教えてください。どうもありがとう。
java - モルフィアでは、他の2つの整数フィールドに基づいてフィールドを照会して返す方法が同じかどうか
mongodb を実行し、morphia を使用しています。
ドキュメントのコレクションがBatchData
あり、いくつかのフィールド値を除外する必要があります。
これはエンティティです:
val1
等しい場合val2
、クエリは返されますuuid
これは取得できる限りですが、もちろん機能しません。
また
100 万以上のBatchData
ドキュメントが存在する可能性があるため、パフォーマンス上の理由で のみ
返す必要があります。uuid
wiki を読んでいて、2 つのメンバー フィールドのフィルターを理解できない、または表示できない
Morphia wiki
mongodb - herokuで無効なMongoObjectIdを取得していますが、ローカルでは取得していません
セットアップ、Morphia 1.2.6aおよびMongoLab上のMongoDBで1.2.4を再生(アドオン経由ではない)
更新説明については、質問の下部を参照してください。
Prod and playのローカルボックスで実行すると、エラーのないページが表示されます。herokuにプッシュアップすると、データベースが下にスローされます。データベーストランザクションを除いて、playは正常に機能しています。
IDにLongを使用しています。それが関係している場合は、config morphia.id.type=Longを再生してください。
この時点で、私は立ち往生しています。どんな助けでも、大いに感謝します。
Application.conf#データベース名を構成します。デフォルト値:テスト
これがherokuのWebアプリスタックです。
同じmongolabdbを使用して私のボックスで実行(play run-%prod)しますが、Herokuでは失敗するのは不思議です。Herokuのログは2番目に丸められますが、あまり役に立ちません。Herokuがカスタムドライバーでオーバーライドされているのだろうか?HerokuにはMongoLabの「アドオン」オファリングがあり、それはそれと関係があると思いますが、それは暗闇の中での刺し傷です。
Heroku mongolabアドオンを使用してテストを試し、それが機能するかどうかを確認します。私はすでにデータベースを持っているのでそれは苦痛ですが、試してみる価値があります-私は思います。
herokuからクローンを取得し、play deps --syncを実行し、ローカルでエラーなしで実行しました。
(ノード上の)アプリケーションバージョンでこの問題のように疑わしいように見えます。これが野生のガチョウの追跡ではないことを願っています。
修正されました。これが取引です。Herokuは、ローカルテスト用に少なくとも3つの個別のフレームワークIDと2つの異なるdbプロバイダーを設定しているフレームワークIDを好みません。それらの1つは私のprod(%prod。)に設定されました。Herokuはこれらが好きではありません。configでプレフィックス付きのフレームワークIDをすべて削除し(他のすべてのデータベースをコメントアウトする必要がありました)、強打します。これは魅力のように機能します。herokuは構成パーサーで作業する必要があると思います。
これは、EclipseのフレームワークID設定です。開発ボックスを再構築した後、この問題が再発したことがわかりました。フレームワーク引数を含めてコマンドラインからplayを実行しても、エラーが発生しないことに気付きました。もう少し調べてみたところ、Play eclipsifyコマンドがビルド構成を上書きすることがわかりました(私のIDEはeclipseです)。新しく生成された構成「VM引数」には、フレームワークID値「-Dplay.id =」(空白)は含まれていません。開発ランチャーのこの値を「-Dplay.id=dev」に変更し、Playが構成を正しく処理します。HerokuはPLAY_OPTSでデフォルトでフレームワークID-%prodを渡すため、両方の環境が期待どおりに機能するようになりました。
同様の問題を抱えている可能性のある他の人のために、この質問を更新しています。私はまた、このhttps://stackoverflow.com/a/9211118/1193291を補強するこのコメントを見つけました