MongoDB - Найти учетные записи, которые соответствуют одному полю, но не соответствуют второму полю - PullRequest
0 голосов
/ 03 июля 2018

Хорошо, я пытаюсь определить список учетных записей, для которых у них совпадает 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});

Я могу сказать, что в логике есть недостатки, но просто не знаю, как их исправить. Это просто чтобы наметить мой ход мыслей. Может быть, есть совершенно другой способ сделать это.

...