2017-04-23 14 views
0

mongoDBで1つのコレクションを作成しました。このフィールドは、 "expireAt"というフィールドのインデックスを作成し、expireAfterSecondsプロパティを0に設定しています。 ドキュメントでTTLを設定したいレベルは収集レベルではありません。 私はredisで知っているように、特定のキーの残りのTTLを得ることができます mongoDBで可能なことはありますか?私は指定されたドキュメントのために残りの時間が失効することができます。mongoドキュメントの残りのTTLを取得する方法

Googleで検索しましたが、関連する情報は見つかりませんでした。

答えて

-1

この

db.hellos.createIndex({ "expireAt": 1 }, { expireAfterSeconds: 3600 }) 

あなたは、文書ごとの有効期限のために0にTTL expireAfterSeconds値を設定した場合、残り時間が違いになり、よりhere

+0

私は与えられたドキュメントのために残ったttlを取得したいと思います。 あなたから与えられたコマンドは、mongoコレクションの特定のフィールドにTTLを作成しました。 –

+0

私はこの文書[here](http://hassansin.github.io/working-with-mongodb-ttl-index)でより多くのことができると思います。 –

+0

こんにちは、私はドキュメントを通過したいが、ドキュメントの残りのttlを取得する機能はありませんでした。 私は期限切れのデータを取得し、自分の要件に従って操作を実行する必要があると思います。 –

1

を読んでみてくださいありがとうございました現在の時刻とTTL日付フィールド(例:expireAt)をドキュメントに追加します。これを照会する特定のサーバー関数はありませんが、アプリでこれを計算するか、MongoDBの集約フレームワークを使用することができます。文書の前に(ミリ秒単位)に残された時間を返すためにmongoシェルを使用して

例次のTTLパスで削除の対象されています

db.mycoll.aggregate(
    { $project: { 
     expireAt: 1, 
     ttlMillis: { 
      $subtract: [ "$expireAt", new Date() ] 
     } 
    }} 
) 

注:TTLのバックグラウンドスレッドは、60秒ごとに実行されますので、文書は、名目上の有効期限を1分以上過ぎることがあります。

関連する問題