2017-03-16 91 views

回答

1

是的,你可以有不同類型的單場索引。您可以創建類型索引例如text,2dsphere,hash

您不能使用稀疏和唯一選項創建相同的索引。

每一個寫操作會在這種情況下

0

更新所有可能的類型的相關索引條目這兩個指數期權有很大的不同。

當您在字符串字段上創建常規索引時,它會索引字符串中的整個值。對於單個字符串(如用戶名登錄),您可以完全匹配。

其他硬件上的文本索引將標記並干擾該字段的內容。因此,它會將字符串分解爲單個單詞或標記,並將進一步將它們縮減爲其詞,使得相同單詞的變體將匹配(例如,「談話」匹配「談話」,「談話」和「談話」爲「談話「是所有三個詞幹)。對真正的文本(句子,段落等)非常有用。 文本搜索

文本搜索支持搜索集合文檔中的字符串內容。 MongoDB提供$ text操作符來在查詢和聚集管道中執行文本搜索。

文本搜索過程:

標記化和莖索引創建和文本命令執行期間都搜索項(多個)。 爲索引字段中包含搜索詞的每個文檔分配一個分數。得分確定 文檔與給定搜索查詢的相關性。

$ text操作符可以搜索單詞和短語。查詢匹配完整的詞幹。例如,如果文檔字段包含單詞blueberry,則對術語「藍色」的搜索將與該文檔不匹配。然而,搜索藍莓或藍莓將匹配。 $正則表達式搜索可以與字符串字段上的常規索引一起使用,以提供一些模式匹配和通配符搜索。不是索引的非常有效的用戶,但它會使用下列索引: 如果該字段存在索引,則MongoDB將正則表達式與索引中的值進行匹配,這可能比集合掃描更快。如果正則表達式是「前綴表達式」,則可能會發生進一步優化,這意味着所有可能的匹配都以相同的字符串開頭。這允許MongoDB根據該前綴構造一個「範圍」,並僅與來自該範圍內索引的那些值匹配。

http://docs.mongodb.org/manual/core/index-text/

http://docs.mongodb.org/manual/reference/operator/query/regex/