2016-11-29 79 views
0

假設數據庫'testdb'具有集合'testcollection'。在這個系列中,有一個關鍵的「測試場」。 這個集合保存了數十億個文件MongoDB在查找具有值範圍內的鍵的文檔時的性能

找到key'testfield'的確切值可以做得非常快,即使那些是數十億的文檔,因爲索引是基於基數樹(可能?)。

model.find({ 
    testfield: "some-value" 
}) 

但是,值的範圍尋找時,難道還要快對抗這些數十億的文件呢?

model.find({ 
    testfield:{ 
    $gte: "some-lower-value", 
    $lte: "some-upper-value" 
    } 
}) 
+1

全部取決於確切的鍵 - 索引排序。而這又取決於構建數據庫時的設置和配置(可以在事實之後進行更改)。如果它是'testfield'值的排序列表,那麼它應該相對較快[假設上限和下限相對接近,顯然如果你有很大的範圍,很大一部分數據庫會按照你的方式發送,一段時間] –

回答

0

墊彼得森在問題下面的評論:

所有依賴於精確關鍵字索引排序。而在構建數據庫時依次取決於 的設置和配置(可能在事後也更改爲 )。如果它是一個測試域 值的排序列表,那麼它應該是相對較快的[假設上限和下限是相對接近的,顯然如果你有一個很寬的範圍,一個 db的大部分被髮送你的方式,花一些時間]

的時間查找範圍是太快太,但基於值的範圍。

可以在〜log(N)中立即找到較低的值和較高的值,就像找到確切的值一樣。由於索引應該是鍵的排序值列表,所以輸出時間取決於循環,以便將所有條目從較低值提取到較高值。