2017-12-29 15 views
0

過去に60分未満のdatetimeを持つデータベースエントリをフィルタリングするにはどうすればよいですか?時間のmongodbの相違

2つのフィールドを持つMongoDBの中で次のように私は、いくつかの日付の操作を試してみましたが、タイムスタンプとすべての私の文書にDate型のあるmarketstartime:

{"$subtract": ["$timestamp", "$marketstartime"]}

が、それはその操作のために、常にnullを返します。どうして?

デシベルで私のタイムスタンプとmarketstartimeエントリが日付タイプであり、次のようになり、これは正しいはず: 2017-12-23 12:00:00.000Z

私が解決しようとしている実際の質問:どのように私が持っているすべてのエントリを取得することができます今から過去60分以内のタイムスタンプ?

+0

いいえ、それは重複しない(https://stackoverflow.com/questions/2943222/find-objects-between-two-dates-mongodb) – Veeram

+0

[2日付MongoDBの間でオブジェクトを検索]の可能重複。質問をもっと慎重に読んでください。ありがとう – Nickpick

+1

投票が取り消されました。申し訳ありませんが、私はそれが2つの日付フィールドの間の時間差であることを認識しませんでした。コレクションのサンプル文書と完全なクエリを追加してみてください。 $ subtractは、ミリ秒単位で違いを与えるはずです。 – Veeram

答えて

1

timestampの値が60分未満に設定されたドキュメントのクエリを作成できます。

from datetime import datetime, timedelta 

query = { 
    '$timestamp': { 
     '$lt': datetime.now() + timedelta(minutes=-60) 
    } 
} 

cursor = db.collection.find(query)