我在mongodb工作。我有一个集合,在集合中,有一个EmailAddress字段。在EmailAddress中有许多类型的无效&有效的EmailAddress数据包含。
我已经编写了一个查询来查找重复记录,我也能够找到有效的EmailAddress但无法合并这两个查询。
db.EZShredCustomerData.aggregate(
{"$match": {"AccountObjectId" : "597ee5ed1f2632885bb650"} },
{"$group" :
{
"_id": "$EmailAddress",
"AccountObjectID" : { $first: '$AccountObjectId' },
"EmailAddress" : { $first: '$EmailAddress' },
"count": { "$sum": 1 }
} },
{"$match": {"count" : { $gte: 1 }} })
通过此查询,我得到重复的记录,如
rdod@drivedag.com 2
n/a 24
entbill@entaac.org 12
none 16
; 8
460
我还写了验证电子邮件是否有效的人
db.EZShredCustomerData.find({
"AccountObjectId": "597ee5ed1f2632885bb650",
EmailAddress: { $regex: /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/}
})
问题是,由于缺乏mongo的经验,无法合并两个查询并获得预期的数据
AccountObjectID EmailAddress
597ee5ed1f2632885bb650 rdod@drivedag.com
597ee5ed1f2632885bb650 entbill@entaac.org
答案 0 :(得分:0)
我自己完成了 以下是代码。
db.EZShredCustomerData.aggregate(
{"$match": {"AccountObjectId" : "597ee5ed1f2632885bb650"} },
{"$group" :
{
"_id": "$EmailAddress",
"AccountObjectID" : { $first: '$AccountObjectId' },
"EmailAddress" : { $first: '$EmailAddress' },
"count": { "$sum": 1 }
} },
{"$match": {"count" : { $eq: 1 }} },
{"$match": {"EmailAddress" : { $regex: /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/ }} })