2016-05-08 3 views
1

インデックスを作成しようとしているフィールドを持つmongodbコレクションがあります。これは、タイトルの文字列フィールドです。約9百万の異なるエントリーがあり、私はただのものを取り除こうとしています。インデックスが大きすぎるフィールドの値についてmongodb colletionをチェックしてください。

私はそれをインデックス化しようとしたとき:

db.getCollection("review_metadata").createIndex({"title" : 1}) 

私が手にこのエラー:だから

db.getCollection("review_metadata").createIndex({"title" : 1})

{ 
     "createdCollectionAutomatically" : false, 
     "numIndexesBefore" : 2, 
     "ok" : 0, 
     "errmsg" : "Btree::insert: key too large to index, failing amazon_reviews.review_metadata.$title_1 1860 { : \"***Super Charger*** Ultra Slim 40W AC Power Adapter Cord for Samsung Notebook/UltraBook : NP300U1A, NP300U1A-A01US, NP305U1A, NP305U1A-A01US, NP305U1A...\" }", 
     "code" : 17282 
} 

、タイトルフィールド内の値のすべてを検索する方法があります値が大きすぎてインデックスに登録できない場合は、

+2

の可能性のある重複:http://stackoverflow.com/questions/29577713/string-field-value-length-in-mongodb –

+1

同意すると、問題のあるドキュメントを見つけるために最低1012の長さを使用してください。 'db.test.find({title:/ ^。{1012、} $ /})'となります。 – JohnnyHK

答えて

1

manaulによると、インデックス付きフィールドには1024バイトの制限があります。 あなたは、インデックスのテキストフィールドに行くと - text indexは良い解決策になる可能性が

db.review_metadata.createIndex(
    { 
    title: "text", 
    otherFieldThatCouldBeIndexedToo: "text" 
    } 
) 
+0

私はちょうど何かをテストしているので、データを使って簡単に/^****検索を行う必要があるので、私はこの解決策を検討しました。ありがとう。 – Zeratas

関連する問題