2014-10-06 80 views
0

我有一個應用程序,客戶想要在同一個列表中看到多種類型的文檔:(Purchase Orders,Payments,Travel requests)。他們希望能夠對存在於所有三種文檔類型中的某些字段進行文本搜索,並且能夠在所有三個文檔都具有的特定字段上對其進行分類。該列表還必須分頁。MongoDB收集設計加入數據

我原本計劃將文檔放在單獨的集合中,因爲它們顯然是不同類型的文檔,但我不知道如何完成它們想要的完整列表,因爲我必須將集合合併在一起才能形成1個列表有效率的。

我真的很想避免創建一個包含所有這些不同文檔類型的集合,因爲我不認爲它是組織數據的好方法,也不認爲這個列表視圖應該是我們如何組織數據的決定性因素但我不確定是否有速度因素將它們分成3個集合,過濾和連接數據,然後對連接列表執行排序和分頁。任何人對我應該做什麼或者是否有類似情況的經驗有任何建​​議?

+0

MongoDB是相當快的自身,所以加入幾百列表中,不會有太大的麻煩。 – Ravi 2014-10-06 09:57:05

+0

對不起,不知道你指的是什麼。你的意思是使用一個集合或拆分集合並將它們加入代碼中?如果它將它們加入代碼中,那麼單獨的集合可能會有數千條記錄放入每個列表中,然後進行排序。節點可以處理這種類型的處理,還是有辦法在數據庫本身上做到這一點? – mu888 2014-10-06 10:09:18

+1

Mongo具有一些很好的內置功能,比如'aggregation'框架和所有功能。 IMO應該將數據存儲在不同的集合中,並在稍後加入。 – Ravi 2014-10-06 10:23:18

回答

0

您需要爲每個採購訂單,付款,差旅請求製作不同的集合。

Mongodb提供彙總的功能。彙總操作將來自多個文檔的值組合在一起,並且可以對分組數據執行各種操作以返回單個結果。所以它可以幫助您在所有其他文檔中搜索字段。

你可以學到聚集在這裏Mongodb aggregation