Mongo - Comment agréger, filtrer et inclure un tableau de données à partir des documents correspondants?

J'ai un mongo adossés à la base de données de contact et je suis en train de trouver les doublons dans un tas de façons différentes.

Par exemple, si 2 contacts ont le même numéro de téléphone, ils sont marqués d'un double possible, idem pour les e-mails, etc.

Je suis en utilisant MongoDB 2.4.2 sur Debian avec pyMongo et MongoEngine.

Le plus proche que j'ai jusqu'à présent est de trouver et de comptage des enregistrements qui contiennent le même numéro de téléphone:

dbh.person_document.aggregate([
    {'$unwind': '$phones'},
    {'$group': {'_id': '$phones', 'count': {'$sum': 1}}},
    {'$sort': SON([('count', -1), ('_id', -1)])}
])

# Results in 
{u'ok': 1.0,
 u'result': [{u'_id': {u'number': u'404-231-4444', u'showroom_id': 5}, u'count': 5},
             {u'_id': {u'number': u'205-265-6666', u'showroom_id': 5}, u'count': 5},
             {u'_id': {u'number': u'213-785-7777', u'showroom_id': 5}, u'count': 4},
             {u'_id': {u'number': u'334-821-9999', u'showroom_id': 5}, u'count': 3}
]}

Afin que je puisse obtenir les numéros sont des doublons, mais je ne peux pas pour la vie de me comprendre comment retourner un tableau des Documents qui contenaient en fait ces articles!

Je veux le voir ce type de retour des données pour chaque numéro:

# The ObjectIDs of the documents that contained the duplicate phone numbers
{u'_id': {u'number': u'404-231-4444', u'showroom_id': 5}, 
  u'ids': [ObjectId('51c67e322b2192121ec4d8f2'), ObjectId('51c67e312b2192121ec4d8f0')], 
  u'count': 2},

Toute aide est grandement appréciée!

source d'informationauteur Marcel Chastain