mongodb如何将重复的数据删除?


  • Lv 1

    有如下数据:

    {'time':'2017-04-01 16:25:21','name':'aaaa'}
    {'time':'2017-03-01 16:25:21','name':'bbbb'}
    {'time':'2017-02-01 16:25:21','name':'aaaa'}
    {'time':'2017-04-01 16:25:21','name':'aaaa'}
    {'time':'2016-11-01 16:25:21','name':'bbbb'}
    {'time':'2016-12-01 16:25:21','name':'aaaa'}
    {'time':'2016-11-01 16:25:21','name':'bbbb'}

    需要删除掉同一个name下time有重复的数据,只保留一条。


  • Lv 1

    @qingfeng

    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 }});
    });

  • Lv 1

    @22265

    谢谢了  


登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待