2016-04-29 125 views
0

我是MongoDB中的新手,我想知道是否有方法在MongoDB內部創建動態視圖。創建MongoDB動態視圖

讓我更加精確: 在mongo中,我有一個包含財務數據的集合和一個顯示數據的GUI界面。 但是,每個用戶都可以通過向網格添加或刪除列來減少數據,並過濾網格:一個經典用例。

我想什麼做的,是創建偵聽到主表中的每個用戶的集合,根據用戶過濾器:是這樣的:

mongo.createView(masterCollection, filters, mapReduce) 

在這種情況下,每個蒙戈更新查看,每次在主集合中進行修改(更新,刪除,插入)。

我可以做一些像這樣的手冊:爲用戶創建一個表,並在我的主集合上使用可用的遊標與用戶過濾器和mapReduce,以及添加,刪除或更新用戶集合中的文檔。

但是,我最多有100個同時在線的用戶,它會在主要集合上打開並保留100個可用的遊標。我不知道蒙戈,但我認爲這不是一個最佳做法。

Actualy我有一個線程爲每個用戶獲取數據的集合,根據用戶過濾器,每5次。

如果有本地mongo方式來處理這種情況或者在mongo中創建用戶視圖的方式,現在可以讓我讓我看看。

謝謝

+0

從版本3.2.6開始,MongoDB不提供數據庫級別的視圖。 – Philipp

回答

0

MongoDB的企業有一個名爲「單一視圖」,它實現數據庫視圖功能。它更適用於彙總多個表格中的數據(例如父/子關係),並且可能比您要查找的要多,但值得一試。缺點是,它只能在昂貴的企業版中使用。

退房the description here

+0

使用企業版不適合我。我會找到另一種方式來做到這一點。 Nerver少了,感謝Philipp和Hascut你的回答 – zouroto

+0

@zoto這裏提供的鏈接是針對MongoDB的一個典型*用例*(「構建單一數據視圖」)而不是特定功能。這個用例不依賴MongoDB的企業版本。 MongoDB 3.4增加了對創建[只讀視圖](https://docs.mongodb.com/manual/core/views/)的支持,這是MongoDB社區版和企業版中的一個標準功能。 – Stennie

1

MongoDB v3.4(社區版和企業版)開始,有來自現有集合或其它視圖創建read only views支持。此功能利用MongoDB aggregation pipeline

若要從mongo shell視圖,你可以這樣做:

db.createView(<view>, <source>, <pipeline>, <collation>) 

使用上面的場景中,你可以創建:

db.createView(<"user_view_name">, <"source_collection_name">, <"aggregation pipeline operators">) 

查看所有可用的Aggregation Pipeline Operators - 即不是隻有你過濾器,您也可以修改文檔結構。

請參閱MongoDB Views behaviour瞭解更多信息。