1. 程式人生 > >NoSQL——資料索引與排序

NoSQL——資料索引與排序

  1. MongoDB預設會在所包含的所有集合的_id屬性上建立一個索引。
  2. 注意解釋函式的呼叫,這是一個查詢效能的測量函式,輸出也是一個文件:
    • db.jihe.find().explain();
    • Cursor: 遊標用來返回查詢結果集。
    • Nscanned:被掃描的屍體總數,使用索引時對應索引實體的總數。
    • nscannedObject:掃描的文件總數。
    • N:返回的文件總數。
    • Millis:查詢的耗時,單位是毫秒。
    • indexBounds:表示查新匹配的索引範圍的最小建和最大鍵。
  3. 在MongoDB中,關鍵字ensureIndex完成了大部分建立索引的工作。如:db.集合名.ensureIndex( { 列名 : 1 (-1) } ),表示升序或者降序。獲得所有索引的列表使用getIndexs()函式。重新建立索引使用reIndex(),也可以使用runCommand(),例如db.runCommand( { reIndex : '集合名' } )。可以使用dropIndex命令刪除索引。
  4. 如果需要,可以使用hint方法強制查詢使用特定的索引,如強制使用降序:db.集合名.find( { movie_id : 1 } ).hint( { movie_id : -1} )。
  5. 可以建立組合索引,如:db.集合名.ensureIndex( { 列名 : 1 (-1) , 列名 : 1 (-1) .....} )。建立後可以單用。
  6. 組合索引也可以包含巢狀欄位。
  7. 可以通過顯示宣告來建立一個稀疏索引:db.集合名.ensureIndex( { 列名 : 1 (-1) , { sparse : true } } )。如果欄位無值就會被忽略,所以稀疏索引可能沒有引用集合中的所有文件。
  8. 可以建立唯一索引:db.集合名.ensureIndex( { 列名 : 1 (-1) , { unique : true } } )。但是列名必須各不相同,否則不會建立,除非顯式宣告除第一個條目外,所有重複都可以丟棄。這樣的顯示宣告:db.集合名.ensureIndex( { 列名 : 1 (-1) , { unique : true , dropDups : true } } )。如果列名為空,則儲存null,但是隻儲存第一個。
  9. MongoDB中可以建立多重鍵,即為陣列中的每個唯一值建立一個鍵。