Doctrine Mongo ODM 重复搜索
Doctrine Mongo ODM Duplicate Search
我目前有一个 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 模块。
我四处寻找,但无济于事。
基础 doctrine/mongodb
包在 1.2 版中引入 aggregation builder,虽然它们还没有编写文档,但您可以查看链接拉取请求中的示例并利用您的 IDE的自动补全。
我们的目标是允许聚合结果的水合结果进入文档 in ODM 但功能尚未准备就绪,现在您需要获得这样的构建器(假设 MailingEntry
是您的映射文档)
$builder = $documentManager->getDocumentCollection(MailingEntry::class)->createAggregationBuilder();
我目前有一个 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 模块。
我四处寻找,但无济于事。
基础 doctrine/mongodb
包在 1.2 版中引入 aggregation builder,虽然它们还没有编写文档,但您可以查看链接拉取请求中的示例并利用您的 IDE的自动补全。
我们的目标是允许聚合结果的水合结果进入文档 in ODM 但功能尚未准备就绪,现在您需要获得这样的构建器(假设 MailingEntry
是您的映射文档)
$builder = $documentManager->getDocumentCollection(MailingEntry::class)->createAggregationBuilder();