我对python中的mongoDb比较陌生,所以请大家帮助我创建了一个名为waste的集合,我想对给定的开始和结束日期进行范围查询。
class Waste(Document):
meta = {'collection': 'Waste'}
item_id = IntField(required=True)
date_time_record = DateTimeField(default=datetime.utcnow)
waste_id = IntField(unique=True, required=True)
weight = FloatField(required= True)
我想对一个给定的开始和结束日期做一个范围查询:我已经尝试了下面的查询。
start = datetime(start_year, start_month, start_day)
end = datetime(end_year, end_month, end_day)
kwargs['date_time_record'] = {'$lte': end, '$gte': start}
reports = Waste.objects(**kwargs).get()
但我一直得到错误信息: DoesNotExist: Waste matching query does not exist.
被发送的日期值为。
{
"start_year": 2020,
"start_month" : 5,
"start_day" : 10,
"end_year": 2020,
"end_month" : 5,
"end_day" : 20
}
当我试图从集合中获取第一个对象时,json的输出是:
{"_id": {"$oid": "5ebbcf126fdbb9db9f74d24a"}, "item_id": 96387295, "date_time_record": {"$date": 1589366546870}, "waste_id": 24764942, "weight": 32546.0}
添加了一个$date,我无法解读日期字段中的数字。但当我用mongo compass看数据时,看起来还不错。
在给定的日期范围内存在一条记录,所以我无法理解我到底哪里出错了。
我通过使用Q:我使用的查询来实现这个工作。
reports = Waste.objects((Q(date_time_record__gte=start) & Q(date_time_record__lte=end)))
回答是:
[{"_id": {"$oid": "5ebbcf126fdbb9db9f74d24a"}, "item_id": 96387295, "date_time_record": {"$date": 1589366546870}, "waste_id": 24764942, "weight": 32546.0}]