因此,我從[MongoDB Docs] [1]中讀取了以下索引定義。對MongoDB索引的基本誤解
索引支持在MongoDB中高效地執行查詢。沒有索引,MongoDB必須執行集合掃描,即掃描集合中的每個文檔,以選擇與查詢語句匹配的文檔。如果查詢存在適當的索引,MongoDB可以使用該索引來限制它必須檢查的文檔數量。
索引是特殊的數據結構,它以簡單的遍歷形式存儲集合數據集的一小部分。索引存儲 特定字段或字段集合的值,按字段的值 排序。索引條目的排序支持有效的 相等匹配和基於範圍的查詢操作。另外, MongoDB可以通過使用索引中的排序來返回排序結果。
我有一個樣本數據庫,其集合名爲寵物。 寵物具有以下結構。
{
"_id": ObjectId(123abc123abc)
"name": "My pet's name"
}
我使用以下代碼創建的名稱字段的索引。
db.pets.createIndex({"name":1})
我想到的是,集合中的文獻,寵物,將在升序基於查詢的過程中名場進行索引。此索引的結果可能潛在地減少總體查詢時間,特別是如果查詢是在考慮可用索引的戰略結構下進行的。在此假設下,以下查詢應該返回所有寵物按排序按升序排序,但事實並非如此。
db.pets.find({},{"_id":0})
相反,它返回的寵物在他們被插入的順序。我的結論是,我對指數如何工作缺乏基本的瞭解。有人能幫我理解嗎?
db.pets.find({},{ 「_ ID」:0})排序({ '名':1})。將工作。您可以使用排序()來指定的順序查詢返回匹配的文檔。查看這些鏈接瞭解更多信息https://docs.mongodb.com/manual/reference/method/cursor.sort/#cursor-sort或https://docs.mongodb.com/manual/tutorial/sort-results-with -indexes /#按照單字段索引排序 – RootHacker