2015-08-08 2 views
0

Имеет ли значение значение MongoDB, если текстовое поле является категоричным при создании индекса? То есть, индекс является текстом, но может поддерживать только конечный набор значений.MongoDB - индекс категориального текста

Ex.

{ 
    v_ : 
     { g_e : 'VH1' } 
}, 

{ 
    v_ : 
     { g_e : 'VH2' } 
} 

В настоящее время я просто делаю,

db.coll.createIndex({'v_.g_e':1}) 

Но я знаю, что этот показатель может принимать только около 60 текстовых значений. Это делает манго, или есть более эффективный способ проиндексировать это?

ответ

-1

Вы можете поместить столько или несколько слов в текстовый индекс, какой хотите. То, что вы должны спросить себя, это то, что вы хотите получить полный текстовый поиск по полям, которые вы помещаете в свой текстовый индекс (у вас может быть только один на коллекцию).

Если вам не нужен полный текстовый поиск и сравнить только конечный набор значений с индексированными документами, вы уже сделали это правильно, учитывая, что вы не хотите сортировать по другому полю документа. В этом случае вы должны поместить это поле в индекс (вопросы порядка!):

db.collection.createIndex({"v_.g_e":1,"fieldToSortBy":1}) 
+0

по вопросам заказа, если у меня есть индекс соединения с 6 полей говорят, и только запрос на пяти из они (но в том порядке, в котором они перечислены, без той, которую я не включил), замедляет ли запрос? Или я должен создать индекс с пятью полями – jwillis0720

+0

@ jwillis0720 MongoDB может и будет использовать составные индексы, даже если используются только некоторые из индексированных полей. Однако составной индекс с шестью полями немного напоминает ситуацию, которая может быть проблемой моделирования. Имея поле, индексированное для сортировки, например, когда часть запроса уже уменьшает документ до нескольких и/или документы возвращаются в целом, обычно является пустой тратой драгоценного ОЗУ. –

+0

, но новый индекс соединения с пятью полями будет быстрее. Это все, о чем я спрашиваю. – jwillis0720

Смежные вопросы