mongodb 索引的創建


mongodb 創建常用的創建索引的有 signle Field Indexes Compound multikey,創建索引就是按照索引字段把documnet 進行排序,索引只存儲了document 創建索引的字段的值,創建索引的目的就是為了加快讀取數據的速度,當然在插入時創建索引,必然會減慢插入時的速度,mongodb提供了異步的創建索引的方法,可以異步創建,詳見這里(http://www.cnblogs.com/Kellana/p/5980410.html)后面我們進行說明。一個索引的大小少於1024字節,一個單個的collection 中的索引不能超過64個,索引名字的大小不要超過128個字節,Compound 索引中的fields個數不能超過31個,一個multikey不支持coverd Query

  先看一下

    signle Field Indexes

{
  "_id": ObjectId("570c04a4ad233577f97dc459"), "score": 1034, "location": { state: "NY", city: "New York" } }
 我們建立一個索引
db.records.createIndex( { score: 1 } ) //注意{score:1}和{score:-1}的區別是score是按照順序排列,{score:-1}是按照降序排列

可以用索引這樣子查詢
db.records.find( { score: 2 } ) db.records.find( { score: { $gt: 10 } } )
 Compound Indexes
db.collection.createIndex( { <field1>: <type>, <field2>: <type2>, ... } )
就像上面的這個例子我們可以這樣創建索引
db.records.createIndex( { score: 1 ,"location.state":1})

我們可以這樣查詢
db.records.find( { score: 2 ,"location.state":"NY"})

multikey Indexes
在一個
Compound Indexes multikey 中的array 的個數最多只能有一個,不能創建這樣的索引如下:
 { _id: 1, a: [ 1, 2 ], b: [ 1, 2 ], category: "AB - both arrays" }
 不能創建這樣的 multikey index a: 1, b: }
這是錯的不能這樣創建
{ _id: 1, a: [1, 2], b: 1, category: "A array" } { _id: 2, a: 1, b: [1, 2], category: "B array" }
如果在document 中出現這樣的document 那就可以這樣創建{a:1,b:1}
 







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM