除了使用者手動建立索引,系統會為每個collection建立乙個主鍵索引,下面分析的就是這個主鍵索引的建立過程。
原來我們說到collection的建立是在database的createcollection中開始。
進入_getorcreatecollectioninstance方法,確實有collection的建立語句。
那麼collection的建構函式又幹了些什麼?從下圖可以看到,collection的構造過程中,確實做了一些與索引相關的工作,但還不知道究竟做了些什麼。我們繼續向下走。
進入init函式,其實並不是每一句都弄清楚了,但是看到_setupinmemorystructures這個函式就吸引了我。
進入setupinmemorystructures函式終於發現了看到了關於獲取index的函式,追蹤發現getindex函式確實就是建立index的方法。經過這一系列步驟,索引結構就確定了。
前面我們說過collection中是如何插入資料的,同樣是在_insertdocuments方法中,我們最後有一段沒有分析,如下圖所示**,首先獲得record的id,然後構造成乙個bsonrecord,這個bsonrecord包含兩項,乙個id,乙個指向record的指標,這樣就構造了index的一項,最後將這個索引節點插入。
MongoDB 3 Index的建立流程1
1 建立 除了使用者手動建立索引,系統會為每個collection建立乙個主鍵索引,下面分析的就是這個主鍵索引的建立過程。原來我們說到collection的建立是在database的createcollection中開始。進入 getorcreatecollectioninstance方法,確實有c...
MongoDB入門(3) MongoDB的索引
檢視索引 建立索引 1表示公升序,1表示降序 索引的種類 索引的名字 db.test table.ensureindex 索引的唯一性 db test table ensureindex db.test table insert 插入成功 db.test table insert 插入失敗,鍵衝突 ...
立創EDA的3d模型(step)匯入
看到這篇文章的讀者應該都知道嘉立創和其開發的立創eda為何物。這裡多說一句,2021會推出立創eda專業版,功能更強大,繪圖從svg轉為webgl,可以期待一下。目前正在嘗試往立創eda 標準版 上遷移之前ad19畫的板,然後遇到乙個step模型匯入的問題,特此記錄。至於怎麼從ad封裝庫中提取ste...