2012-01-23 64 views
1

我被告知MongoDB使用GridFS文件系統來存儲文件。但是,有沒有辦法通過序列化或base64編碼將文件本身存儲在數據庫BSON結構中?如何在MongoDB中存儲文件?

非常感謝,並感謝任何幫助。

+0

序列化文件?那是什麼意思? – milan

回答

2

當然,您可以將您的文件作爲字符串序列化並將其存儲在文檔字段中。但是在這種方法中有一個缺點 - 所有的文件應該是<,然後是16MB(一個文檔的size limit)。

MongoDB的GridFS的基礎上的MongoDB集合頂部,幷包含兩個集合:

  1. 文件 - 文件(名稱,大小,ID,要保存任何其他信息)
  2. 大塊的元數據 - - 包含序列化文件體的集合。如果文件大小超過16 mb,則會限制mongodb自動創建額外的塊。因此,任何文件將作爲一個文件文檔和> = 1個塊文件在mongodb中持久化。

您可以檢查here mongodb中文件的外觀。

因此,如果您決定將文件存儲在mongodb中,最好使用通過社區方法 - gridfs進行測試的通用方法。

1

GridFS是正常mongo集合之上的一個薄層,因此文件內容('自己')存儲爲BSON。 GridFS(BSON最終)以二進制形式存儲文件,並且您希望獲取二進制內容,base64對它們進行編碼並將其存儲爲二進制形式?爲什麼要這麼做?