Doctrine Mongo ODM重复搜索

时间:2016-03-11 14:28:45

标签: mongodb symfony zend-framework2 doctrine

我目前有一个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模块。

我搜索得很远但无济于事。

1 个答案:

答案 0 :(得分:0)

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

我们的目标是允许将汇总结果保存到文档in ODM中,但功能尚未准备就绪,现在您需要获取此类构建器(假设MailingEntry是您的映射文档)

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