我有一个有电子邮件字段的用户集合。我对电子邮件有一个独特的限制。我刚刚发现我的用户能够输入以下两个不同情况的电子邮件
hello.java@xxx.com
HELLO.JAVA@XXX.COM
我想查询我的集合,以获取有上述问题的数据库中可能有多少条记录。
请帮我解决这个问题
我可以{"email":/hello.java/}
但如果我知道这封电子邮件是两次输入的电子邮件,那么这是可能的。现在问题是我想知道哪些电子邮件都有冗余条目。
答案 0 :(得分:0)
您可以使用aggregate
获取重复电子邮件列表:
db.test.aggregate([
// Project the lower-cased version of each doc's email field
{$project: {email: {$toLower: '$email'}}},
// Group them by email and get a count of each
{$group: {_id: '$email', count: {$sum: 1}}},
// Include the ones with a count > 1
{$match: {count: {$gt: 1}}}
])