mongo聚合查询aggregate查找重复数据,第二次match不生效? 100
RT我想查询重复的数据,使用了两次match,第一个match是筛选条件,第二个match选出数量大于1的数据,也就是重复的数据,但是查询结果是一堆count等于1的数据...
RT我想查询重复的数据,使用了两次match,第一个match是筛选条件,第二个match选出数量大于1的数据,也就是重复的数据,但是查询结果是一堆count等于1的数据,也就是说第二个match并没有生效;我尝试过去掉第一行的match,结果是正确的,count都是大于1的数据,但是生产环境显然不能这么查,不加筛选条件数据量太大了。下面是查询语句:
db.user_channel.aggregate(
{'$match':{event:'install',create_time:{'$gte':'2019-12-10 00:00:00','$lt':'2019-12-11 00:00:00'}}},
{'$group':{
'_id':{user_id:'$user_id',app_pkg:'$app_pkg'},
'count':{'$sum':1}
}},
{'$match':{
'count':{'$gt':1}
}}
) 展开
db.user_channel.aggregate(
{'$match':{event:'install',create_time:{'$gte':'2019-12-10 00:00:00','$lt':'2019-12-11 00:00:00'}}},
{'$group':{
'_id':{user_id:'$user_id',app_pkg:'$app_pkg'},
'count':{'$sum':1}
}},
{'$match':{
'count':{'$gt':1}
}}
) 展开
2个回答
展开全部
mongodb中使用aggregate可以返回数组字段数组的指定索引的元素
参考语句:
{$match:{'duid':15}},
{$project:{duid:1,"default":1}},
{$unwind:"$default.styles"},
{$match:{'default.styles.status':1}},
{$group:{_id:"$_id","defaults":{$push:"$default.styles"}}}
解释:
1:过滤数据{$match:{'duid':15}}
2:获取想要的列{$project:{duid:1,"default":1}}
3:获取展开后数组字段{$unwind:"$default.styles"}
4:条件查询数组元素{$match:{'default.styles.status':1}}
5:分组后保存结果{$group:{_id:"$_id","defaults":{$push:"$default.styles"}}}
数据结构如下:
{
"_id" : ObjectId("55dad346ea23e7c11beefce5"),
"duid" : 11.0,
"default" : {
"style" : "普通会诊",
"alias" : "",
"money" : "0",
"styles" : [{
"code" : 1,
"style" : "普通会诊",
"alias" : "一般会诊",
"money" : 100,
"status" : 1,
"remark" : "需要患者亲自来到医院"
} {
"code" : 6,
"style" : "夜间门诊",
"alias" : "夜间门诊",
"money" : 100,
"status" : 0,
"remark" : "夜间门诊"
}, {
"code" : 7,
"style" : "其他门诊",
"alias" : "其他门诊",
"money" : 10,
"status" : 0,
"remark" : "其他门诊"
}]
}
}
参考语句:
{$match:{'duid':15}},
{$project:{duid:1,"default":1}},
{$unwind:"$default.styles"},
{$match:{'default.styles.status':1}},
{$group:{_id:"$_id","defaults":{$push:"$default.styles"}}}
解释:
1:过滤数据{$match:{'duid':15}}
2:获取想要的列{$project:{duid:1,"default":1}}
3:获取展开后数组字段{$unwind:"$default.styles"}
4:条件查询数组元素{$match:{'default.styles.status':1}}
5:分组后保存结果{$group:{_id:"$_id","defaults":{$push:"$default.styles"}}}
数据结构如下:
{
"_id" : ObjectId("55dad346ea23e7c11beefce5"),
"duid" : 11.0,
"default" : {
"style" : "普通会诊",
"alias" : "",
"money" : "0",
"styles" : [{
"code" : 1,
"style" : "普通会诊",
"alias" : "一般会诊",
"money" : 100,
"status" : 1,
"remark" : "需要患者亲自来到医院"
} {
"code" : 6,
"style" : "夜间门诊",
"alias" : "夜间门诊",
"money" : 100,
"status" : 0,
"remark" : "夜间门诊"
}, {
"code" : 7,
"style" : "其他门诊",
"alias" : "其他门诊",
"money" : 10,
"status" : 0,
"remark" : "其他门诊"
}]
}
}
追问
请问我的语句需要怎么修改呢
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
改成如下就好了
db.user_channel.aggregate(【
{'$match':{event:'install',create_time:{'$gte':'2019-12-10 00:00:00','$lt':'2019-12-11 00:00:00'}}},
{'$group':{
'_id':{user_id:'$user_id',app_pkg:'$app_pkg'},
'count':{'$sum':1}
}},
{'$match':{
'count':{'$gt':1}
}}
】)
db.user_channel.aggregate(【
{'$match':{event:'install',create_time:{'$gte':'2019-12-10 00:00:00','$lt':'2019-12-11 00:00:00'}}},
{'$group':{
'_id':{user_id:'$user_id',app_pkg:'$app_pkg'},
'count':{'$sum':1}
}},
{'$match':{
'count':{'$gt':1}
}}
】)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询