我在mongodb中有大约170万份文档(future 1000多万份).其中一些代表我不想要的重复条目.文档的 struct 如下所示:

{
    _id: 14124412,
    nodes: [
        12345,
        54321
        ],
    name: "Some beauty"
}

如果文档的值为least one node same,则该文档是重复的,而另一个文档的值为same name.删除重复项的最快方法是什么?

推荐答案

假设要从集合中永久删除包含重复name+nodes项的文档,可以使用dropDups: true选项添加unique索引:

db.test.ensureIndex({name: 1, nodes: 1}, {unique: true, dropDups: true}) 

正如文件中所说,在这方面要格外小心,因为它会从数据库中删除数据.首先备份数据库,以防它不能完全按照您的预期运行.

UPDATE

此解决方案仅通过MongoDB 2有效.x作为dropDups选项在3.0(docs)中不再可用.

Mongodb相关问答推荐

MongoDB Aggregate:查找每个月的交叉日期范围的数量

如何使用内部数组中的值更新文档

如何从集合中移除所有匹配的数组项?

MongoDB - 来自先前匹配文档的聚合匹配字段

Mongo聚合的具体格式

从 kubectl exec 获取返回值到 powershell 脚本

在golang中的mongodb中的集合列表中打印集合

使用新字段插入数据或使用 updateOne mongodb 有条件地更新

Meteor 中的平均聚合查询

Mongo查询子文档的多个字段

聚合/元素子文档作为 mongo 中的顶级文档

如果 mongoDB 服务器正在运行,如何从驱动程序判断

指定字段对于 MongoDB 是transient瞬态的,但对于 RestController 不是

Mongoose $push 不断添加两个条目

NodeJS中的密码重置

在 GridFS、express、mongoDB、node.js 中存储来自 POST 请求的数据流

TypeError: object of type 'Cursor' has no len()

在 MongoDB 上分片 GridFS

使用 Node.js 将许多记录插入 Mongodb 的正确方法

MongoDB聚合框架的索引优化