2016-12-13 16 views
0

ValidationDateに基づいて、過去30日間および過去1年間のmongodbコレクションの文書の合計数を返したいとします。ここに私のサンプルデータここPymongo文書数を返す

{ 
    "_id": { 
     "$oid": "570480d5d487dd2c577a4d5f" 
    }, 
    "ValidationDate": { 
     "$date": "2016-04-05T22:00:03.335Z" 
    }, 
    "DataRaw": " HF 13300100032016-03-30 23:40:05+0000+ 12.03+ 4.376+ 1387.00 0.0", 
    "ReadingsAreValid": true, 
    "locationID": " HF 133", 
    "Readings": { 
     "BatteryVoltage": { 
      "value": " 0.0" 
     }, 
     "pH": { 
      "value": 4.376 
     }, 
     "SensoreDate": { 
      "value": { 
       "$date": "2016-03-30T23:40:05.000Z" 
      } 
     }, 
     "temperature": { 
      "value": 12.03 
     }, 
     "Conductivity": { 
      "value": 1387 
     } 
    }, 
    "HMAC": "0f38675cac8b3b761225c80b7441df36ddc4911ff30405835d7803dcde15d0b8" 
} 

は日時インポート日時

def main(): 
    conn = Connection() 

    db = conn.cloudtest 

    data = db.test_5_27 
    print data.find({"ReadingsAreValid":True}).count() 

if __name__ == "__main__": 
    main() 

からpymongoインポート接続 から自分のコード

がコードです、コレクション内のドキュメントの合計数を返しますが、私は意志ValidationDateに基づいて過去30日間および最後の1年間にグループ化する方法を知りたいこのような

+0

Connectionは、最新のPyMongoにアップグレードしMongoClientを使用する必要があり、しばらくの間、PyMongoから削除されました。 –

答えて

0

何か:

import datetime 

from pymongo import MongoClient 

data = MongoClient().cloudtest.test_5_27 

now = datetime.datetime.utcnow() 
last_30d = now - datetime.timedelta(days=30) 
last_year = now.replace(year=now.year - 1) 

since_last_month = data.find({ 
    "ReadingsAreValid": True, 
    "ValidationDate": {"$gte": last_30d} 
}).count() 

since_last_year = data.find({ 
    "ReadingsAreValid": True, 
    "ValidationDate": {"$gte": last_year} 
}).count() 
関連する問題