2016-12-13 2 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" 
} 

는 날짜 가져 오기 날짜에서 pymongo 가져 오기 연결 에서 내 코드

내 샘플 데이터입니다

def main(): 
    conn = Connection() 

    db = conn.cloudtest 

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

if __name__ == "__main__": 
    main() 

코드는 컬렉션에 문서의 총 수를 반환하지만 난 것 을 기준으로 지난 30 일 및 최근 1 년을 기준으로 그룹화하는 방법을 알고 싶습니다. 이 같은

+0

연결이 PyMongo에서 제거 된 동안, 당신은 최신 PyMongo으로 업그레이드하고 MongoClient를 사용해야합니다. –

답변

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()