从MongoDB 4.0删除重复项

时间:2019-05-30 08:53:45

标签: mongodb duplicates

我正在尝试从MongoDB中删除重复项,但是所有解决方案都失败了。鉴于当前的JSON结构:

{
    "_id": { "$oid": "5cee31bbca8a185b76a692db" },
    "date": { "$date": "2018-10-07T19:11:38.000Z" },
    "id": "1049014405130858496",
    "username": "chrisoldcorn",
    "text": "“The #UK can rest now. The Orange Buffoon is back in his xenophobic #WhiteHouse!” #news #politics #trump #populist #uspoli #ukpolitics #ukpoli #london #scotland #TrumpBaby #usa #america #canada #eu #europe #brexit #maga #msm #gop #elections #election2018 https://medium.com/@chrisoldcorn/trump-babys-uk-visit-a-reflection-1c2aa4ad942 …pic.twitter.com/Y6Yihs9g6K",
    "retweets": 1,
    "favorites": 0,
    "mentions": "@chrisoldcorn",
    "hashtags": "#UK #WhiteHouse #news #politics #trump #populist #uspoli #ukpolitics #ukpoli #london #scotland #TrumpBaby #usa #america #canada #eu #europe #brexit #maga #msm #gop #elections #election2018",
    "geo": "",
    "replies": 0,
    "to": null,
    "lan": "en"
}

我需要根据文件中的“ id”字段删除所有重复项。

我已经尝试过db.tweets.ensureIndex( { id:1 }, { unique:true, dropDups:true } ),但是我不确定这是正确的方法。我得到以下输出:

enter image description here

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您似乎正在运行版本> 3.0的MongoDB,因此无法通过确保索引来删除重复项

根据docs

  

在3.0版中进行了更改:dropDups选项不再可用。

最快的方法是

  1. 创建一个Dump
  2. 删除收藏集
  3. 创建新索引
  4. Restore转储

在恢复插入期间,所有重复的文档将被删除

下一个最佳解决方案是运行脚本以收集所有重复的ID并将其删除