問題タブ [jongo]
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.
playframework - MarshallingException: 結果参照を非整列化できません
私は play 2.4 を使用しており、モデル "user" に参照オブジェクト "document" を設定したいと考えています。イテレータを繰り返し処理すると、次のエラーが発生します。ルート /users を呼び出すと、通常はすべてのユーザー オブジェクトと埋め込まれたドキュメントを含む Json リストを取得する必要があります。
[MarshallingException: Unable to unmarshall result to class models.User from content { "_id" : { "$oid" : "560969b4d4c6209ff2a1a973"} , "name" : "Alexander Buder" , "documents" : [ { "name" : " Sample.pdf"} , { "名前" : "Test.pdf"}]}]
モデル ユーザー
モデル ドキュメント
コントローラ
ルート
mongodb - Play 2.3 Jongo ObjectId をカスタム ID に
私は play-jongo で Play 2.3 scala を使用しています:
"uk.co.panaxiom" %% "play-jongo" % "0.7.1-jongo1.0"
私はscalaケースクラスを持っています:
Jongoを使用してユーザーを保存するとPlayJongo.getCollection("users").save(User("uuid","user name"))
私のDBには以下があります:
必要な結果が、scala クラスの属性に_id
マップされる文字列値を持つ場合:id
scala ケース クラスを Java POJO にすると、すべてが正常に機能します (以下の簡単な例)。この場合、必要な結果が得られます。
私は何を間違っていますか?@Id
ジャクソン/ジョンゴにその注釈を正しく理解させるにはどうすればよいですか?
他のSOの回答には、私が使用するアノテーションを使用する提案がありますが、@Id
成功しません。
java - MongoDriver UUID サポート
mongo ドライバーと、Java でデフォルトで UUID を挿入する方法に問題があります。(Mongo ドライバー バージョン 3.2)
UUID("...") => BinData(4, "...")
LUUID("...") => BinData(3, "...") 未指定エンコーディングのレガシー UUID
UUID がレガシー形式で挿入されていますが、V4 バイナリを使用して挿入する方法が見つからないようです。mongo ドライバーで V4 を使用して挿入を処理する方法を知っていますか。または、 MongoJackやJongoMongoなどの代替ライブラリがこの挿入をサポートしている場合は?
編集: MongoJack と Jongo はまだ Mongo V3 を完全にはサポートしていないようです。カスタム コーデックの使用を伴わない、これに対する潜在的な回避策はありますか?
mongodb - Kotlin では、Jackson がアノテーションのないオブジェクトのアンマーシャリングに失敗する場合とそうでない場合がある理由
MongoDB にアクセスするために、Jongo で Kotlin を使用しています。Jongo は、Jackson を使用してオブジェクトをシリアライズ/デシリアライズし、MongoDB からオブジェクトを保存および読み取ります。Jackson-Kotlin モジュールを使用して、コンストラクターを使用して Kotlin データ クラスをシリアル化します。
以下は、正常にシリアル化されるデータクラスの例です。
デシリアライズに失敗する同様のクラスの例を次に示します。
Jackson のデシリアライズが失敗するため、Jongo によって次の例外がスローされます。
次のように Session データ クラスに完全に注釈を付けると、機能します。
私の質問は、なぜワークフローで機能するのですか? 完全に注釈が付けられていない場合に、Session データ クラスのアンマーシャリングが失敗する微妙な違いは何ですか?
編集
違いは、ワークフロー テスト ケースを Gradle から実行してテストしたことです。このテスト ケースでは、異なるバージョンの Kotlin を使用し、次に IDEA IDE から実行したセッション テスト ケースを使用しました。IDEA の Kotlin プラグインの更新により、IDEA がテスト ケースの実行に使用する Kotlin のバージョンも更新されましたが、これには気づきませんでした。これにより、Kotlin と Jackson-Kotlin ライブラリのバージョンが一致しなくなりました。以下の受け入れられた回答は、物事を再び機能させるために何を構成する必要があるかを指摘しました。
java - mongoDB の半分を反復処理し、残りの半分を別のクエリで反復処理したい
次のエラーが表示されます。
スレッド「メイン」com.mongodb.MongoCursorNotFoundException での例外: com.mongodb.operation.QueryHelper.translateCommandException(QueryHelper のサーバー mongodb2:27017 でエラー コード -5 およびエラー メッセージ「カーソル 304054517192 がサーバー mongodb2:27017 に見つかりません」でクエリが失敗しました。 .java:27) で com.mongodb.operation.QueryBatchCursor.getMore(QueryBatchCursor.java:215) で com.mongodb.operation.QueryBatchCursor.hasNext(QueryBatchCursor.java:103) で com.mongodb.MongoBatchCursorAdapter.hasNext(MongoBatchCursorAdapter. java:46) で com.mongodb.DBCursor.hasNext(DBCursor.java:155) で org.jongo.MongoCursor.hasNext(MongoCursor.java:38) で com.abc.Generator.Generate(Generator.java:162) でcom.abc.main.main(main.java:72)
これは、クエリの実行時間が長すぎたためだと思います。
そのため、mongo を使用してクエリを実行しfind()
、コレクションの半分を反復処理する予定です。
次に、別のfind()
クエリを使用して、コレクションの残りの半分を反復処理します。
コレクションの半分の位置にカーソルを直接配置する方法を教えてください。ドキュメントは、そのための機能を提供していないようです。
私は基本的に を使用してfind()
、 を介してサーバーに接続しながら、100000 レコードのコレクションを反復処理していますssh
。
java - Jongo 使用時の allowDiscUse
allowDiscUse: true
jongo を使用して MongoDB にクエリを実行するときに追加する方法はありますか? そのようなエラーが見つかりました - `ソートは104857600バイトのメモリ制限を超えましたが、外部ソートを選択しませんでした。操作を中止しています。allowDiskUse:true を渡してオプトインすることは、集計が次のようになるような方法で防ぐことができます
しかしAggregate
、Jongo のクラスを見る限り、パイプラインはそれ自体にのみ適用され、メソッドで実行できますas
。
Jongo から別のものに切り替えることなく、そのパラメーターを mongo に渡す方法はありますか?