| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- # coding=utf-8
- import os
- import sys
- import time
- import datetime
- import pymongo
- from urllib import parse
- import django
- BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
- sys.path.append(BASE_DIR)
- os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'bigdataAPI.settings')
- django.setup()
- from apps.DeviceCount.models import CbdPhoto
- user = parse.quote_plus("root")
- passwd = parse.quote_plus("yfkj@6020")
- # 账号密码方式连接MongoDB | "mongodb://用户名:密码@公网ip:端口/"
- myclient = pymongo.MongoClient("mongodb://{0}:{1}@8.136.98.49:57017/".format(user,passwd))
- db = myclient.smartfarming
- device = db.sa_device
- cbdphoto_a_collection = db.sa_device_cbdphoto
- cbdphoto_b_collection = db.sa_device_cbdphoto
- cbdphoto_c_collection = db.sa_device_cbdphoto
- def main():
- now = time.time()
- # 过去 16.5 小时间戳
- last = int(now) - 16.5 * 3600
- date_format = datetime.datetime.fromtimestamp(now).strftime("%Y-%m-%d")
- query = [
- {
- "$match": {
- "addtime":{
- "$gte": last
- }
-
- }
- },
- {
- "$group": {
- "_id": "$device_id",
- "count": {"$sum": 1}
- }
- },
- {
- "$sort": {"count": -1}
- }
- ,
- {
- "$match": {
- "count": {
- "$gte": 100
- }
- }
- }
- ]
- a_result = cbdphoto_a_collection.aggregate(query)
- a_result_lst = list(a_result)
- ids = [int(i.get("_id")) for i in a_result_lst]
- devices = device.find({"id": {"$in": ids}}, {"device_id": 1, "id": 1, "_id": 0})
- id_de = {
- str(i.get("id")): i.get("device_id")
- for i in list(devices)
- }
- for k in a_result_lst:
- id = k.get("_id")
- org_photo_ct = k.get("count")
- device_id = id_de.get(id)
- cbd_photo, is_created = CbdPhoto.objects.get_or_create(
- day = date_format,
- device_id = device_id,
- defaults={
- "day": date_format,
- "device_id": device_id,
- "org_photo_ct": org_photo_ct
- }
- )
- print(cbd_photo, is_created)
- myclient.close()
- if __name__ == "__main__":
- main()
|