2016-09-28 46 views
0

我在我的collection中有2000萬個文檔。我遇到了緩慢的響應問題。所以我寫了一個腳本將這個集合分成多個集合。所以現在我有一個集合1.3我採取了一個隨機查詢來檢查響應,所以對於同一個查詢,我得到的響應時間更長的集合大約是19000ms &較小的集合大約是13000ms。我在節點上使用mongoose lib來連接mongodb。 我是新來的mongodb,所以請告訴我在哪個方向我應該看看這些問題。從mongodb獲得緩慢的響應節點

+0

開始(HTTPS: //docs.mongodb.com/manual/reference/explain-results/)。 – robertklep

+0

你有索引的查詢字段? –

回答

-1

MongoDB無法執行JOINS,因此集合並沒有什麼收穫。但是對於MongoDB和大多數其他NoSQL數據庫,Its easy to use separate databases in a single instance。因此,如果您的數據集很大,您可以按照範圍鍵將它們分組到不同的集合中,等等。進一步將這些集合分解到不同的數據庫中以獲得性能。我對績效的提高表示懷疑,但理論上應該這樣做。

例如:有兩個數據庫,在整個百萬數據集的單個實例通過[使用`.explain()`]運行在蒙戈外殼查詢服務不同的數據

db["collectionSet1"].AppCollection.find({application_status: {$in: ["pending", "approved", "rejected"]}}).sort({_id: -1}) 
db["collectionSet2"].OrigCollection.find({origination_status: {$in: ["originated", "approved", "rejected"]}}).sort({_id: -1}) 
+0

由於沒有足夠的數據,所以沒有任何與OP相關的連接..... – profesor79

+0

我沒有明白你的觀點:「由於沒有足夠的數據,沒有與OP連接」?顯然他提到他擁有20M的數據。另外我的建議是嘗試打入集合和數據庫集合。現在可能他不會有區分收藏的標準,但他總是可以將它們分成不同的數據庫。每個數據庫然後可以有不同的集合。 – Cyclotron3x3