我做我的應用程序服務器以下JSON數據,得到Java的蒙戈驅動程序(不BasicDataObject列表)
DBCollection collection = mongoDB.getCollection("collection");
DBCursor dbCursor = collection.find();
我有一個JSON對象從服務器發送到客戶端,這樣怎麼能 我將DBCursor對象轉換爲JSON。
其實我發送一個大集合到客戶端,如果我將這個集合的文檔轉換成java對象比它吃很多內存,所以如果有一種方法來將dbcursor直接轉換爲json字符串,或者任何其他方法解決我的問題。 這將是很大的幫助。 謝謝。
它看起來像mongodriver創建數據對象的對象,當調用find方法,所以它不會幫助轉換成dbcursor JSON(這可以通過使用序列化()com.mongodb.util.JSON類的方法。
修訂問題:
有沒有辦法的情況下直接使用find方法來得到一個集合的數據
你對使用find方法是正確的,但它將bason結果轉換爲DBObjects,我只是想阻止它,並希望直接通過實現與db溝通的實現驅動程序方法來獲得此bason數據(json prefred)。現在我正在尋找解決方案。因爲當我得到該集合的所有文件時,它花費了大約200mb的內存,這是不可取的。如果您已經有此類解決方案或任何其他解決方案,請幫助我。 –
答案是,您無法獲取所有數據,因爲您說的原因 - 您無法將它全部保存在內存中。標準的做法是對結果進行分頁,即將一組數據(比如說一百個數據)撤回,返回這些數據,然後獲取下一批,然後返回這些數據等等。沒有辦法解決將所有結果拉入內存的事實將佔用大量內存。你已經提供了你想要的低級細節,但你能提供更高層次的觀點嗎?例如。 「試圖通過休息api返回客戶的完整列表」? – Trisha
當我說分頁是這樣做的標準方式時,這適用於SQL數據庫以及Mongo。有關示例,請參見http://stackoverflow.com/questions/8383488/how-to-implement-paging-in-mongodb。 – Trisha