我试图过滤数据为过去一个月和聚合的基础上类别列。
end_date = datetime.now()
start_date = end_date - timedelta(days=30)
filter_query = {
'load_date': {
'$gte': start_date,
'$lte': end_date
}
}
count = await collection.count_documents(filter_query)
print(count) # gives correct count
pipeline = [
{'$match': {'load_date': filter_query}},
{'$group': {'_id': '$category', 'count': {'$sum': 1}}}
]
items = collection.aggregate(pipeline)
category = await items.to_list(limit)
return {"total_items": count, "items": category}
过滤后的计数给出正确的结果。如果我没有在管道中通过时间过滤器{'$match': {'load_date': filter_query}}
,则group by category可以工作。但是当我在管道中添加两者时,我只得到total_items。Category返回空数组。
1条答案
按热度按时间sy5wg1nm1#
在后一个过滤器中,您意外地双重嵌套了
'load_date'
两次:因此,解决方案是将
$match
的定义从到