在多个字段中检查mongodb中的类似记录。

时间:2015-11-22 20:59:43

标签: mongodb aggregation-framework

在mongodb中,我有一组人员,其中包含以下架构。我需要编写一个聚合来查找数据库中可能的重复项:

  • 如果另一个人具有相同的firstName,lastName& currentCompany存在。
  • 或者,如果另一个人拥有相同的当前公司& currentTitle存在。
  • 或者,如果其他人拥有相同的电子邮件(存储为数组中的对象)
  • 或者,如果其他人拥有相同的linkedIn / twitter网址。

是否有一种直接的方法可以根据上述具有mongodb聚合的情况检查重复项? This question接近我正在寻找的内容,但我需要检查的不仅仅是一个键/值。

{ _id: 'wHwNNKMSL9v3gKEuz',
  firstName: 'John',
  lastName: 'Doe',
  currentCompany: 'John Co',
  currentTitle: 'VP Sanitation',
  emails: 
   [ { address: 'Anais.Grant@hotmail.com',
       valid: true } ],
  urls: 
   { linkedIn: 'http://linkedin.com/johnDoe',
     twitter: 'http://twitter.com/@john', 
   } 
}

谢谢!

1 个答案:

答案 0 :(得分:0)

我们可以实现它正在使用以下内容 $和,$或,$ ne。

注意: - 您需要提供一条记录作为条件的输入,以便将其与其他记录相匹配以消除重复

我已经提供了一个示例查询,它将过滤这两个标准的集合,您可以添加其余条件以获得最终结果

  • 如果另一个人具有相同的firstName,lastName& currentCompany存在。
  • 或者,如果其他人拥有相同的linkedIn / twitter网址。
db.yourcollection.find({
  $and: [{
    $or: [{
      firstName: {
        $ne: 'John'
      }
    }, {
      lastName: {
        $ne: 'Doe'
      }
    }, {
      currentCompany: {
        $ne: 'John Co'
      }
    }]
  }, {
    $or: [{
      "urls.linkedIn": {
        $ne: 'http://linkedin.com/Doe'
      }
    }]
  }]
})