2016-12-07 9 views
0

私はこのコレクションにいくつかのバックグラウンドタスクを宣言しています。各タスクについてユーザーはmaxExecution(秒単位)を指定できます。 startedAt(日付オブジェクト)というフィールドもあり、実行を停止する必要があるすべてのドキュメントを見つける必要があります(maxExecutionに達しました)。 currDate_seconds - maxExecution > startedAt_secondsのようなものです。mongodbフィールド計算に基づく文書の検索

どのように私はmongoでこの問題に取り組むべきであるかに関するアイデア?次のようなものは、トリックを行いますMongoShellで

+0

mongoシェルまたは言語ドライバを使用していますか? – Yoshiya

+0

私はpymongo(python)を使用しています –

+0

'$ redact'演算子を使用します – styvane

答えて

0

var currentTimeSeconds = new Date().getTime()/1000; 
db.myCollection.find({ 
    $where: '(' + currentTimeSeconds + ' - this.maxExecution) > this.startedAt_seconds)' 
}); 

$whereクエリ演算子はjavascriptが(thisがドキュメントを参照)を使用して文書を照会することができます。任意の言語ドライバで同じスタントを引き出すことができます - 現在の時間を使用して$whereクエリ演算子を構築してください。

ところで、$whereオペレータの時間を取得することはお勧めしません。これは、クエリが実行されると変更されるためです。

関連する問題