0

アプリケーションサーバーで次のことを行っていますが、

  DBCollection collection = mongoDB.getCollection("collection"); 
  DBCursor dbCursor = collection.find(); 

JSON オブジェクトをサーバーからクライアントに送信する必要があるため、DBCursor オブジェクトを JSON に変換するにはどうすればよいですか。

実際、私は大きなコレクションをクライアントに送信しています。このコレクションのドキュメントを Java オブジェクトに変換すると、大量のメモリが消費されるため、dbcursor を直接 json string に変換する方法、または私の問題を解決する他の方法がある場合。それは大きな助けになります。ありがとう。

find メソッドを呼び出すと、mongodriver が DataObject のオブジェクトを作成するように見えるため、dbcursor を json に変換することはできません (これは、com.mongodb.util.JSON クラスの serialize() メソッドを使用して可能です)。

質問の修正:

find メソッドを使用せずにコレクションのデータを直接取得する方法はありますか。

4

1 に答える 1

0

カーソルを JSON 文字列に変換する必要はありません。カーソルは、find から返された値を反復処理するための手段にすぎません。

「検索」を使用せずにコレクションからデータを取得する方法があるかどうかを尋ねることは、クエリを実行せずに SQL データベースからデータを取得する方法を尋ねることに少し似ています。ある時点で、必要なデータを取得するためにデータベースを呼び出す必要があります。MongoDB Java ドライバーでは、これは find() メソッドを介して行われます。返されるオブジェクトの量を制限したい場合 (驚くことではありませんが、コレクション全体で大量のメモリが消費される可能性があります)、クエリの詳細を find メソッドに渡して結果をフィルター処理します。

ただし、JSON のみを使用している場合は、MongoJackなどのサードパーティ ライブラリを調査することをお勧めします。これは、内部で Java ドライバーを使用しますが、クエリの結果を直接 JSON に変換します。

于 2013-07-01T11:14:18.320 に答える