mongoDB管道使用-去重分页查询

业务逻辑:查找db.iot_run_record_hist中的数据,其中必须满足一下条件:
	1.runStatus字段取2 , 10 , 18 , 8 , 9 , 17中的一个;
	2.按照deviceId去重,并且重复的数据中取时间最早的一个;
	3.计算每个deviceId重复的数据的数量,记录在count中;
	4.最后的到的数据按照倒序排列,并做分页;


db.iot_run_record_hist.aggregate([
    {
	   "$match" : {"runStatus":{"$in":[2 , 10 , 18 , 8 , 9 , 17]}}
    },
    { "$sort": { "receiveDate":1 } },  
    { "$group": {
        "_id": { "deviceId": "$deviceId" },
        "id":{"$first" :"$_id"},
        "deviceId": {"$first" :"$deviceId"} ,
        "runStatus": {"$first" :"$runStatus"} ,
        "receiveDate": {"$first" :"$receiveDate"},
        "count" : {"$sum" : "$deviceId"}
    }},
    { "$project": {
        "_id": 1,
        "id":1,
        "runStatus": 1,
        "deviceId":1,
        "receiveDate":1,
        "count":1
    }},
    { "$sort": { "receiveDate":-1 } },  
{ "$skip":0 }, { "$limit":10 }
]);
获取总数目
db.iot_run_record_hist.aggregate([ 
	{ "$match" : {"runStatus":{"$in":[2 , 10 , 18 , 8 , 9 , 17]}} }, 
	{ "$group": { "_id": { "deviceId": "$deviceId", "transportId" : "$transportId"} }}, 
	{ "$group":{"_id":null,"amount":{"$sum":1}}}
]);





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值