Skip to content

Instantly share code, notes, and snippets.

@diggzhang
Created December 20, 2016 02:56
Show Gist options
  • Save diggzhang/5d09c5645c626a8c1ab3e38c5bfb6f01 to your computer and use it in GitHub Desktop.
Save diggzhang/5d09c5645c626a8c1ab3e38c5bfb6f01 to your computer and use it in GitHub Desktop.
pymongo clean up docs
# -*- coding: utf-8 -*-
import sys
import pymongo
from pymongo import MongoClient
from datetime import datetime
import datetime
import json
from StringIO import StringIO
import time
from datetime import date
import calendar
import subprocess
import dateutil.parser
db_host = MongoClient("10.8.8.111", 27017)
db_events_v4 = db_host["eventsV4"]
collections_eventV4 = db_events_v4['eventV4']
class get_collection_start_end_count(object):
def __init__(self, arg):
self.collecion_instance = arg
def count_docs(self, start, end):
collecion = self.collecion_instance
return collecion.count({
"serverTime": {
"$gte": start,
"$lt": end
},
"platform": "backend"
})
def remove_docs(self, start, end):
collecion = self.collecion_instance
return collecion.delete_many({
"serverTime": {
"$gte": start,
"$lt": end
},
"platform": "backend"
})
print("### 创建数据库实例")
eventV4_Instance = get_collection_start_end_count(collections_eventV4)
print("### 创建时间范围")
base_date = datetime.datetime(2016, 11, 22, 16)
date_nums = 15
date_list = [base_date + datetime.timedelta(days=x) for x in range(0, date_nums)]
for this_day in date_list:
start_date = this_day
end_date = this_day + datetime.timedelta(days=1)
count = eventV4_Instance.count_docs(start_date, end_date)
print end_date.strftime("%Y%m%d"),":" ,count
print("Clean up docs")
removed = eventV4_Instance.remove_docs(start_date, end_date)
print start_date.strftime("%Y%m%d"),":",removed.deleted_count
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment