【问题标题】:Doctrine Mongo ODM Duplicate SearchDoctrine Mongodb ODM 重复搜索
【发布时间】:2016-06-26 20:18:51
【问题描述】:

我目前有一个 mongo shell 命令在邮件列表集合中运行重复搜索:

var duplicates = [];

db.mailing_entries.aggregate([
  { $group: { 
    _id: { full_name: "$full_name", business: "$business", address_line_1: "$address_line_1", postal_code: "$postal_code" }, 
    dups: { $addToSet: "$_id" },
    count: { $sum: 1 } 
  }}, 
  { $match: { 
    count: { $gt: 1 } 
  }}
])
.result          
.forEach(function(doc) {
doc.dups.shift();
doc.dups.forEach( function(dupId){ 
    duplicates.push(dupId);
    }
) 

});
printjson(duplicates); 

shell 代码对我来说工作得很好,但是,经过大量搜索,我找不到使用 map reduce 函数或任何其他方法正确转换为 Doctrine Mongo ODM 的方法。

我目前正在使用与 Zend Framework 2 集成的 Doctrine Mongo ODM 模块。

我搜索了很多地方,但无济于事。

【问题讨论】:

    标签: mongodb symfony zend-framework2 doctrine


    【解决方案1】:

    底层doctrine/mongodb 包在 1.2 版中引入了aggregation builder,虽然它们还没有编写文档,但您可以查看链接拉取请求中的示例并利用 IDE 的自动完成功能。

    我们的目标是允许将聚合结果的水合结果放入文档in ODM,但功能尚未准备好,现在您需要获取这样的构建器(假设 MailingEntry 是您的映射文档)

    $builder = $documentManager->getDocumentCollection(MailingEntry::class)->createAggregationBuilder();
    

    【讨论】:

      猜你喜欢
      • 2014-04-19
      • 2015-04-10
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      • 2017-08-13
      • 1970-01-01
      • 2012-12-20
      • 2016-08-26
      相关资源
      最近更新 更多