Dedupe MongoDB Collection

cap*_*lam 1 duplicates mongodb nosql

我是NoSQL的新手,对不起,如果这是非常基本的话.假设我有以下集合:

{
    a: 1,
    b: 2,
    c: 'x'
},
{
    a: 1,
    b: 2,
    c: 'y'
},
{
    a: 1,
    b: 1,
    c: 'y'
}
Run Code Online (Sandbox Code Playgroud)

我想对匹配的任何内容运行"重复数据删除"查询:

{
    a: 1,
    b: 2
    ... (any other properties are ignored) ...
},
Run Code Online (Sandbox Code Playgroud)

因此,在运行查询后,集合中的以下任何一个都可以正常:

{
    a: 1,
    b: 2,
    c: 'y'
},
{
    a: 1,
    b: 1,
    c: 'y'
}
Run Code Online (Sandbox Code Playgroud)

要么

{
    a: 1,
    b: 2,
    c: 'x'
},
{
    a: 1,
    b: 1,
    c: 'y'
}
Run Code Online (Sandbox Code Playgroud)

只要只剩下一个== 1和b == 2的文档.

dcr*_*sta 6

如果你总是希望确保只有一个文档任何给定的a,b组合,您可以使用一个唯一索引ab.创建索引时,您可以提供dropDups选项,该选项将删除除一个副本之外的所有内容:

db.collection.ensureIndex({a: 1, b: 1}, {unique: true, dropDups: true})
Run Code Online (Sandbox Code Playgroud)