2015-06-03 51 views
0

我有一個很大的數據集(〜50G),而每個文檔的結構如下。在mongodb中加速多個條件查詢

{ 
    'docid':0x12345, 
    'text':'this is a text example', 
    'datetime':datetime.datetime(2012,12,1,12,00,00), 
} 

而且我想查詢一個時間跨度匹配「文本」字段和「日期時間」有些話該文件。

所以我創造了兩個「文本」和「日期時間」字段的索引,運行查詢爲:

db.test.find({"$text":{"$search":"canon"},'datetime': {'$gte': start, '$lt': end}},{"score":{"$meta":"textScore"}}) 

但我發現查詢是非常非常慢,我不會當我可以知道有結果。

有什麼問題嗎?以及如何加快查詢? 在此先感謝。

回答

0

幾件事情需要注意:

1.你不需要的話佳能(「‘佳能’」)圍繞單引號和雙引號。只需「canon」就足夠了。
2.是「需要時間」您文檔中的一個鍵嗎?或者你的意思是日期?輸入一個不存在的鍵將會極大地減慢查詢速度,因爲它會導致mongodb搜索整個集合

+0

是的,它們是我的問題中的一些拼寫錯誤。謝謝你的細心。 –

+0

不客氣。 MongoDB可能會非常棘手,因爲當字段名稱中存在拼寫錯誤時,它不會出錯 – IsaacBok