MongoDB2.75之后删除冗余文档

遇到的问题:MongoDB3删除冗余的documents
解决方法:

  1. 创建集合,选择超过1个的文档
1
2
3
4
var cur = db.questions.aggregate([
{ $group: { _id: { qid: "$qid" }, uniqueIds: { $addToSet: "$_id" }, count: { $sum: 1 } } },
{ $match: { count: { $gt: 1 } } }
]);
  1. 通过迭代的方式,将上面选择出来的冗余的集合中的文档在之前的集合中进行删除
1
2
3
4
5
6
7
8
while (cur.hasNext()) {
var doc = cur.next();
var index = 1;
while (index < doc.uniqueIds.length) {
db.questions.remove(doc.uniqueIds[index]);
index = index + 1;
}
};

参考文章:Stackoverflow-Mongo 3 duplicates on unique in index -dropDups

Profeel wechat
添加微信,加我好友,与我直接交流!

坚持原创技术分享,您的支持将鼓励我继续创作!