0

我正在我的应用程序服务器中执行以下操作,

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

我必须从服务器向客户端发送一个 JSON 对象,那么如何将 DBCursor 对象转换为 JSON。

实际上我正在向客户端发送一个大集合,如果我将此集合的文档转换为 java 对象,那么它会占用大量内存,所以如果有办法将 dbcursor 直接转换为 json string 或任何其他解决我的问题的方法。这将是很大的帮助。谢谢。

它看起来像 mongodriver 在调用 find 方法时创建 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 回答