Хорошо, я пытаюсь определить список учетных записей, для которых у них совпадает SSN, но DOB отличается.
Обсуждаемые поля: account_num, ssn, dob. В конце мне нужен account_num для тех учетных записей, которые имеют более 1 учетных записей, которые соответствуют SSN, но имеют другую DOB. Я надеюсь, что в этом есть смысл.
Я пытался что-то в этом роде, но не получил никаких результатов ...
db.getCollection("accounts").aggregate(
[
{"$match" : {"ssn" : { "$exists" : true }}},
{"$match" : {"ssn" : {"$ne" : [ ]}}},
{"$group" : {"_id" : {"ssn" : "$ssn"},"count" : {"$sum" : 1}}},
{"$match" : {"count" : {"$gt" : 1}}},
{"$group" : {"_id" : {"dob" : "$dob"},"count" : {"$sum" : 1}}},
{"$match" : {"count" : "1"}},
{"$project" : {"account_num" : 1,"ssn" : 1,"dob" : 1}}
],
{"allowDiskUse" : true});
Я могу сказать, что в логике есть недостатки, но просто не знаю, как их исправить. Это просто чтобы наметить мой ход мыслей. Может быть, есть совершенно другой способ сделать это.