2011-04-17 24 views
2

我想一個目錄樹存儲到MongoDB的Ruby應用程序中,所以我們都在談論的東西像JSON/BSON表示:存儲在MongoDB中一個目錄樹,並作爲JSON到Flex應用程序

/ 
/foo 
/foo/one 
/foo/bar/two 
/foo/bar/three 
/four 

我的目標是高效地存儲它,並通過json將其提供給Adobe Flex應用程序,該應用程序將在Tree組件中顯示它。

這是您認爲最好的解決方案?
this document建議了一些選項。 我想去這樣的事情(記住16Mb的文件大小的限制),這種格式的第一圖案:

{"/" => [{"foo" => ["one", {"bar" => ["two", "three"]}]}, "four"]} 

你覺得呢?這是存儲分層文件系統樹的好格式嗎?

任何建議表示讚賞。

+0

這是一個樹的相當標準的表示,你如何計劃訪問它?你只是把它從MongoDB中拿出來,還是在它仍然在MongoDB中的時候試圖去查看它? – 2011-04-17 22:11:20

+0

爲什麼不使用GridFS? – 2011-04-18 04:49:53

+0

[MongoDB嵌套集]的可能重複(http://stackoverflow.com/questions/1853735/mongodb-nested-sets) – 2011-04-18 04:50:56

回答

2

有很多方法來解決這個問題,但這裏的解決方案對於Flex(而不是服務器)來說是最簡單的。

您發佈的示例數據有點怪異IMO。默認情況下,Flex樹組件接受一個Object(任何類型的)並查看是否有一個名爲'children'的屬性,如果有的話,它從那裏分支出來。

所以,如果你想在一個樹組件,以顯示該目錄結構,你會送一個類似的JSON:

{name:'/', children:[{name:'foo', children:[{name:'one'},{name:'bar', children:[{name:'two'},{name:'three'}]}]},{name='four'}]} 

有意義嗎?

+0

感謝您對柔性版面的建議。它會增加我的json大小。我必須檢查16Mb限制是否足夠。也許我需要某種「轉換」在紅寶石層,但我不喜歡它。等待他人回覆...讓我們看看有人有其他建議。 – ALoR 2011-04-18 13:40:46

+0

等等,什麼?! 16megs?就個人而言,我不會使用JSON,因爲它效率不高。AMF對於較大的數據集要好得多。另外,我的例子只是讓樹可以很容易地顯示它。你總是可以做客戶端轉換,但如果你有16兆數據,客戶端轉換不是很現實......你究竟在做什麼? – 2011-04-18 13:50:41

+0

這是一個本地應用程序,所以數據在本地交換,無需Web或遠程接口,只需本地AIR應用程序,因此傳輸速率不成問題。順便說一句,我不認爲16Mb的限制是永遠不會達到的,這是有人希望控制檯中顯示整個HD的最壞情況,通常只有少數目錄(遞歸地)在主目錄中被收集。 AMF沒有被選擇,因爲flex應用程序並不是唯一一個請求這些數據的應用程序,我們希望單獨使用api,json似乎是最佳選擇。 – ALoR 2011-04-18 17:10:21

1

要麼你

看看使用GridFS的或

http://www.mongodb.org/display/DOCS/Trees+in+MongoDB http://stackoverflow.com/questions/1853735/mongodb-nested-sets

+0

該文檔正是我在我的問題中引用的那個......實際上,我的問題是如果這是一個整個文件系統的良好解決方案,並且非常適合稍後在樹組件中進行處理和顯示。你將如何使用gridfs?我不想存儲文件的內容,只是名稱。 – ALoR 2011-04-18 06:42:07

+0

然後將文件名存儲爲樹。文件系統不像樹結構。這兩個鏈接的問題描述了你需要什麼? – 2011-04-18 07:48:39

+0

完全沒問題。只是想就此提出的建議是最好的選擇。如果任何人已經不得不存儲這種信息以及他如何做到的。 – ALoR 2011-04-18 09:44:46

相關問題