2013-03-20 67 views
2

所以我有一個古怪的配置數據庫導入到MongoDB的,看起來是這樣的:的MongoDB 2.4新文本索引功能

"_id" : ObjectId("51191d45890311d9b2a0865d"), 
"field1" : "randomtextstuff", 
"field2" : "randomtextstuff", 
"field3" : "randomtextstuff", 
"field4" : "randomtextstuff", 
"field5" : "randomtextstuff" 

有些文件有100個其他人非。

所以我想測試新的文本搜索,所以我嘗試了以下指標:

db.profile_specialties.ensureIndex({"field1":"text", 
"field2":"text", 
"field3":"text", 
"field4":"text", 
"field5":"text", 
"field6":"text", 
... All the way to 100 
"field96":"text", 
"field97":"text", 
"field98":"text", 
"field99":"text", 
"field100":"text"}) 

返回的錯誤信息是:

{ 
     "err" : "ns name too long, max size is 128", 
     "code" : 10080, 
     "n" : 0, 
     "connectionId" : 1, 
     "ok" : 1 
} 

有任何其他人遇到這個問題?

+3

直接從文檔:'索引名稱,包括它們的完整名稱空間(即database.collection)不能超過128個字符。請參閱db.collection.getIndexes()字段名稱以瞭解現有索引的名稱。「每個集合只能有1個文本索引。 – WiredPrairie 2013-03-20 20:03:53

+0

感謝WiredPrairie – Fruitful 2013-03-20 20:59:25

回答

2

隨着MongoDB的2.4文本搜索,你可以使用新的wildcard specifier ($**)索引各領域的字符串內容:

db.profile_specialties.ensureIndex("$**":"text"}) 

您應該考慮到所有領域的文本索引將是非常大的,雖然。

+0

我不確定這是如何工作的,因爲文檔不清楚。我引用「一個集合最多隻能有一個文本索引」。從這裏:http://docs.mongodb.org/manual/applications/text-search/#create-a-text-index – Robs 2013-03-24 20:56:05

+1

您最多可以有一個文本索引,但該索引可以跨越一個或多個字段。 '$ **'說明符將索引帶有字符串內容的所有字段。 – Stennie 2013-03-25 00:34:17