2014-03-01 162 views
0

全部,Mongodb索引建議

我有一個帶有以下字段的mangodb集合。

  1. _ID
  2. 標題
  3. 說明
  4. 標籤,陣列

我已經創建上_id和標籤字段2索引。我創建了索引供人們在關鍵字的幫助下搜索內容。

我已經創建的索引與標籤:-1,顯示最新插入的記錄首次證明。但即使在它之後它按照_id的升序顯示。

如何創建標籤領域的指數顯示最後插入第一個在同一時間,以顯示它應該允許我對標籤搜索領域更快。

回答

0

如果_id場是默認​​反映插入順序,並且要通過降插入順序查詢所有與特定標籤的文件,你可以使用如下查詢:

find({ Tags : $value }).sort({ _id : -1 }) 

對於此查詢,您可以在{Tags:1,_id:-1}上創建複合索引。所有具有相同標籤的文檔將按照降序插入順序進行排序,並且此索引應該適用於此查詢。

請注意,如果你是在做標記範圍查詢,如:

find({ Tags : { $in : [ $value1, $value2 ] }}).sort({ _id : -1 }) 
find({ Tags : { $gt : $value}}).sort({ _id : -1}) 

這將無法使用該索引到結果文檔進行排序,並需要在內存中對結果進行排序。您可以使用.explain(true)運行查詢來檢查查詢計劃。如果scanAndOrder爲真,則表示查詢無法使用索引中文檔的順序來返回排序結果。

也有一些文件和博客相關的指標,我建議你閱讀: