开发者社区> 问答> 正文

mongodb数据重复后需要查重

现在需要删除orderPay表的add_time字段大于等于2018-11-10 00:00:00,且小于2018-11-11 00:00:00这个区间的outTradeNo字段重复了的数据,只保留一份

展开
收起
248875702349971660 2018-11-16 12:25:26 917 0
1 条回答
写回答
取消 提交回答
  • 深耕云原生技术布道,熟悉DevOps、敏捷开发、容器技术、微服务架构等,擅长架构设计及企业数字化转型,在跨境电商场景上有多年的工作经历,在设计高并发、高性能、高可用中架构有较深的经验积累。精益和工匠精神不断提高对于技术领域的研究和探索。
    请清考如下。 
    insertMany是模拟数据
      
    aggregate是删重复数据
    db.yyy.insertMany([
        {"_id":1,'time':'2017-04-01 16:25:21','name':'aaaa'},
        {"_id":2,'time':'2017-03-01 16:25:21','name':'bbbb'},
        {"_id":3,'time':'2017-02-01 16:25:21','name':'aaaa'},
        {"_id":4,'time':'2017-04-01 16:25:21','name':'aaaa'},
        {"_id":5,'time':'2016-11-01 16:25:21','name':'bbbb'},
        {"_id":6,'time':'2016-12-01 16:25:21','name':'aaaa'},
        {"_id":7,'time':'2016-11-01 16:25:21','name':'bbbb'},
    ]); db.yyy.aggregate([
      { $group: { 
        _id: { time: "$time", name: "$name"}, 
        dups: { "$addToSet": "$_id" }, 
        count: { "$sum": 1 } 
      }}, 
      { $match: { 
        count: { "$gt": 1 }
      }}
    ],
    {allowDiskUse: true}
    ).forEach(function(doc) {
        doc.dups.shift();
        db.yyy.remove({_id : {$in: doc.dups }});
    });
    2018-11-16 14:16:40
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
开源数据库 MongoDB 专场 MongoDB疑难杂症分析及优化 立即下载
MongoDB多数据中心的方案选型之路 立即下载
饿了么高级架构师陈东明:MongoDB是如何逐步提高可靠性的 立即下载