每次用pymongo进行聚合查询的时候,有一些命令总会忘记,记录一下
情况1:keywords字段存在三种情况,不存在,存在为空列表,不为空的列表。可以根据下面命令查询不为空的列表。
table_post.find({'keywords':{'$exists':True},'keywords.0':{'$exists' : True }})'
情况2:根据查询条件将所有字段放在同一个list中,若字段也为list,需要两次$unwind.
k = table_post.aggregate([
#查询条件
{'$match':{'createdAt':{'$gt':s,'$lt':e},'keywords':{'$exists':True}}},
{"$group": {
"_id": '$domain',
"tcount": {"$sum": 1 },
"keywords": {"$push":"$keywords" }
}},
{"$unwind":"$ttags" },
{"$unwind":"$ttags" },
{"$group": {
"_id":"$_id",
"tcount": {"$first":"$tcount" },
"tags": {"$addToSet":"$ttags" }
}}
# {"$project": {
# "count":"$tcount",
# "tags":"$ttags"
])