导入pymongo模块
from pymongo import MongoClient
python连接MongoDB数据库
def __init__(self, ip='0.0.0.0', port=27017):
self.db_server = MongoClient(ip, port)['test']
self.db_filter_data = self.db_server['workSpace']
连接ip为0.0.0.0,端口为27017,名为test的数据库,self.db_server[‘workSpace’]操作此数据库中名为workSpace的集合。
筛选条件
condition = {
'sex': 'man',
'time': {"$gte": star_time, "$lte": end_time}
}
筛选条件用json格式,time条件中使用了$gte和$lte,表示筛选时间段time为 start_time<= time<= end_time 的数据。
$lt < (小于 )
$lte <= (小于等于)
$gt > (大于 )
$gte >= (大于等于)
我在给数据库存数据时候使用了时间戳的形式,所以这里对star_time和end_time做处理,也转化为时间戳的形式。
def string2timestamp(format_time):
# 时间
ts = time.strptime(format_time, "%Y-%m-%d %H:%M:%S")
# 格式化时间转时间戳
tm = time.mktime(ts)
return tm
# 筛选条件
star_time = string2timestamp('2020-08-11 16:00:00')
end_time = string2timestamp('2020-08-13 8:00:00')
数据库筛选数据
db_res_data = self.db_filter_data.find(condition).sort({"time":-1})
self.db_filter_data.find(),MongoDB的find()方法中如果没有传参,默认筛选所有数据,find()中传入筛选条件,筛选符合条件的参数。sort()方法可以对查询到的数据进行排序,sort({“time”:-1})表示对数据按time字段进行降序排序,1用于升序排列,而-1用于降序。
total = self.db_filter_data.find(condition).count()
count()方法,统计查询到的数据条数。