2016-08-06 5 views
2

のフィールドがbooleanMongoengineのPythonであります。 pending=Trueの場合にのみ、1時間後に文書を削除します。無条件で1時間後に文書を削除する必要があった場合は、期限切れインデックスを設定します。いくつかの条件付きチェックを追加してインデックスを期限切れにするスマートで簡単な方法はありますか?条件に基づいてmongoDBの期限切れインデックス

ありがとうございます!

答えて

1

私は期限切れのドキュメントの定期的なクリーニングにいくつかのカスタムロジックを追加する直接ことはできません怖いですが、docsで説明したように、あなたが期限切れにインデックスのみpending = True場合、アプリケーションからインデックスフィールドを設定を使用することができます - ドキュメントとして期限切れインデックスのフィールドがなくても、あなたが要求したものではありませんが、これはうまくいくはずです。

+0

私の場合は、最初に期限切れインデックスを設定する必要があります(開始時にpending = Trueが設定されているため)。 pending = Falseに設定すると、インデックスを削除する必要があります。私はどのようにMongoengineでこれを達成するか分からない。 remove_index()関数はありません。また、_metaディクショナリからエントリを削除すると、ドキュメントだけでなくコレクション全体が削除されます。私は、FalseではなくNullにペンディングを設定する考えがあります。インデックスはnullで動作しないと思います。何を指示してるんですか? – giliev

+0

ペンディングがFalseに変更されたときはいつでも、期限切れインデックスが基づいているフィールドにnullを設定できます。 'pending'をTrueに戻すときに値を後で復元する必要がある場合は、2つの日付フィールドを持つように追加フィールドを導入する必要があります.1つは日付を常に保持し、もう1つは日付を保持します保留中= Trueの場合のみ。この場合、期限切れインデックスは、もちろん第2のフィールドに基づいている。希望は意味をなさないでしょう:) – DAXaholic

+0

保留中のものが再び真に戻ってくることはないので、1つのインデックスで十分です。どうもありがとうございました! :) – giliev

関連する問題