【发布时间】:2021-05-02 20:24:45
【问题描述】:
我有以下函数,它应该根据电子邮件键返回重复项的 _id 值。但是,无论我尝试了什么,我都无法让函数返回任何空对象以外的任何内容。我在这里想念什么?还是有更好的方法我应该考虑?
var duplicates = [];
db.medicallists
.aggregate([
{
$group: {
_id: {
email: "$email"
},
duplicate_ids: { $addToSet: "$_id" },
count: { $sum: 1 }
}
},
{
$match: {
count: { $gt: 1 }
}
},
], { allowDiskUse: true })
.forEach(function(doc) {
doc.duplicate_ids.shift(); // First element skipped for deleting
doc.duplicate_ids.forEach(function(dupId) {
duplicates.push(dupId); // Getting all duplicate ids
});
});
printjson(duplicates);
编辑: 这是一个示例文档:
{
_id : 5a2fed0c8023cf7ea2346067,
primary_spec : "Addiction Medicine",
first_name : "John",
last_name : "Sample",
city : "Las Vegas",
state : "NV",
phone : "1111111111",
fax : "1111111111",
email : "sample@aol.com"
}
【问题讨论】:
-
您能提供一个示例文档吗?
-
@codemonkey 好主意。我已经编辑了问题以包含它。
标签: mongodb