2016-05-25 6 views
0

私はMongodbを使い始めました。捕まってしまった。mongodbでの文書の自動削除

は、だから私は、フィールドのコレクションを持っている:

_id
たstartDate(ロング)

は、今私はある文書を自動的に削除する
名(ロング)
endDateに特定の日付より古い
startDateフィールドのTTLインデックスを作成し、2分後に有効期限を設定し、有効期限が切れるかどうかをテストしました。 startDateを含む文書をisoDateとして挿入している間、その文書は有効で期限切れです。

..insert({startDate:newDate()})--> Got deleted after 2 secs. 

私の質問は、以前にインストールされたデータのうち、startDateがlong値であることです。では、どうしたらうまくいくのですか?

答えて

0

TTLインデックスはisoDateでのみ機能します。アップデートを実行してあなたのロングをisoDateに変換するか、手動で削除するだけです(おそらく、長いものはあなたのカットオフよりも古いか、まもなくなります)。

+0

ありがとうPaul! startDate値ではなく、作成日に基づいてドキュメントを削除する必要があるようです。私は別のフィールドとしてcreationDateを持っていません。私は、作成された文書の日付を取得したい場合、ObjectIdのタイムスタンプを取得できることを理解しています。しかし、_idにTTLインデックスを作成することはできません。私は正しい?なにか提案を? – Rthp

+0

このようなフィールドがない場合は追加してください。ドキュメントを更新して、ObjectIdのタイムスタンプを使用してcreate_dateフィールドを追加します(私はこの関数を使ったことはありませんが、意味があります)。次にcreate_dateのTTLインデックス。 – PaulMcG

関連する問題