2017-04-11 5 views
-1

私は修正が必要なインデックスを持っています。私は、インデックスを落としたとき同じ名前のmongoインデックスを再作成できません。

{ 
    "v" : 1, 
    "key" : { 
     "expectedDateTime" : 1 
    }, 
    "name" : "expectedDateTime_1", 
    "ns" : "expectation.expectation_data", 
    "expireAfterSeconds" : 43200 
} 

expireAfterSecondsが間違っていると432000.

に変更する必要がありますが、それは()細かい

db.expectation_data.dropIndex({"expectedDateTime":1}) 
{ "nIndexesWas" : 4, "ok" : 1 } 

getIndexesに見えたインデックスが存在しないことを示しています。私は、インデックスを再作成しようとすると、

が、私は()getIndexesを実行する上で今、このエラーに

db.expectation_data.createIndex({"expectedDateTime":1}, 
{expireAfterSeconds:432000,name:"expectedDateTime"}); 
{ 
    "ok" : 0, 
    "errmsg" : "Index with name: expectedDateTime already exists with different options", 
    "code" : 85 
} 

を取得し、私は、インデックスが古いTTLで再作成しているように見えることがわかります。私はこのプロセスを何度も繰り返してみましたが、何度も何度も同じ問題に遭遇しました。

私は、同じ名前のインデックスを再作成することができないという文書を見つけることができません。私は別の名前を使用する場合は、同じ名前のインデックスを再作成上の任意の制限が

db.expectation_data.createIndex({"expectedDateTime":1}, {expireAfterSeconds:432000}); 
. 
. 
>db.expectation_data.getIndexes() 
. 
. 
{ 
    "v" : 1, 
    "key" : { 
     "expectedDateTime" : 1 
    }, 
    "name" : "expectedDateTime_1", 
    "ns" : "expectation.expectation_data", 
    "expireAfterSeconds" : 432000 
} 

あります正常に動作しますか?

+1

これは、インデックスが自動的に再作成されるようです(実行中のバックグラウンドプロセスまたはクライアントが確実にensureIndexをプログラムで呼び出すMongoDBに接続していますか?) – Matt

+0

@Matt - 期待通りです。私はちょうどそれを理解し、数分前に答えを投稿しました。 –

+0

あなたがしたい場合は、答えとして投稿し、私はそれを受け入れる:) –

答えて

0

を期待通りに

は、私は、インデックスを作成することができました。 ensureIndexまたは @Indexを使用するアプリケーションがないことを確認します。注釈はデータベースに接続しています。

-1

これは、古いタイムアウトのエンティティで使用された@Indexアノテーションが原因でした。私はインデックスを変更したときにアプリケーションはまだ実行されていました。私は、アプリケーションを停止したとき、私はもともと

インデックスは削除後に自動的に再作成されるようにこれが見えます
関連する問題