2012-01-16 43 views
0

我有一個類別的集合,每個類別文檔都包含一個指向其父類的鏈接(根類別除外)。到目前爲止很簡單。如何用結果文件的計數來標註子文檔?

我想列出類別,並將subcategory_count字段添加到具有直接後代計數的每個文檔。

我應該怎麼做呢? Map/Reduce可以使用嗎?

+0

btw如果你已經列出所有這些文件,爲什麼不把它們全部存儲在一個文件中? – milan 2012-01-16 13:21:45

+0

因爲這會讓模式變得過於複雜,並且使得樹編程變得更加困難......另外,它可能非常快速地超過16MB。 – Dor 2012-01-16 13:48:52

回答

0

find()得到他們所有人,計數每個級別上的子類別的數量,然後更新()。

但是好像你的域對象應該爲你做這件事,所以你最終得到一個可以包含類別的類別對象(它也可以包含類別...),因此一個MongoDB文檔(你是無論如何都列出了所有這些內容,因此在一個查詢中回顧整個事情是有意義的)。

+0

你不明白我的問題。我不想將其他字段添加到類別文檔中,而是使用計數*即時*註釋每個文檔。 – Dor 2012-01-16 13:43:56

+0

再次,我的答案將是「域對象功能」。但是我會將它們添加爲一個字段,僅僅因爲它更簡單,而且最終只會產生更少的錯誤。 – milan 2012-01-16 13:58:28

1

MongoDB中沒有「計算列」,因此您無法同時選擇數據和計算子文檔。

這也是大多數人將數組長度與數組一起存儲的原因。

{friends_list: [1, 3, 234, 555], 
friends_count: 4} 

這有助於更容易檢索,篩選,排序等,但它需要多一點手動工作。

所以,你基本上限於這些選項:

  1. 商店都一個文件內。

  2. 將子類別計數存儲在類別中。

  3. 在客戶端計數子類別。

+0

我想現在我會選擇#2。 – Dor 2012-01-17 16:38:02

+0

經過更多的研究,我決定採用MPTT存儲算法 - 它允許簡單計算子孫數(其他有用的功能) – Dor 2012-01-17 20:19:01

+0

@Dor:好的,很酷。無論什麼對你有用,我的朋友:-) – 2012-01-17 20:20:38

相關問題