2017-01-06 3 views
0

の期限切れでないプロパティを満了します。mongoosedbは、私は、このプロパティが含まれているスキーマを作成しました

コレクションにインデックスが作成されていません。

私はその後、どちらのログがoccuringしている

model.on('index',function(err){ 
    console.log('index created'); 
    if (err) { 
     console.log(err); 
    } 
}); 

を追加しました。

私はmongooseがコレクションのttlインデックスを作成しようとしていないと仮定していますが、なぜそうは見えません。私は一歩足りませんか?自分でインデックスを作成するつもりですか? mongooseドキュメントは、mongooseがインデックスの作成を処理することを暗示しているようです。

+0

どのようにインデックスを作成していますか? – Alex

+0

これは問題です。私はそれを自分で行うつもりですか? mongooseドキュメントでは、expiresプロパティを使用するときにインデックスが作成されるので、自分でインデックスを作成しようとはしていません。 – Bruford

+0

インデックスがdbで作成されていることを確認してください。mongoシェルの 'db.yourdb.getIndexes()'を参照してください。 インデックスを変更するときは、コレクション内でインデックスを手動で削除してから新しいインデックスを有効にしてください。 – Alex

答えて

0

mongoosejsは実際に疑わしいインデックスの作成を処理します。次のような問題を見つけるために、私はensureIndexes呼び出しを追加しました:

model.ensureIndexes(function (err) { 
    console.log('ensure index', err) 
}) 

これは、既存のインデックス(一意の電子メールアドレス)のいずれかがあるため一意ではありませんでしたDB内の既存の文書の失敗していたことを示しました。

この問題を修正すると、上記のコードが正常に動作します。これは、マングースTTLの問題に遭遇する他の誰にも役立ちます。

関連する問題