2013-07-18 74 views
10

我有一個mongo支持的聯繫人數據庫,我試圖通過一堆不同的方式找到重複的條目。Mongo - 如何彙總,過濾和包含匹配文檔中的數據數組?

例如,如果2個觸點有它們標記爲可能重複,同上,用於電子郵件等

我使用MongoDB的2.4.2在Debian與pyMongo和MongoEngine同一個電話號碼。

我至今是發現和計數包含相同的電話號碼記錄最接近:

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} 
]} 

所以我可以說是重複的數字,但我不能爲我的數字生活了解如何返回實際包含這些項目的文檔數組!

我想看到這種回報數據爲每個編號:

# 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}, 

任何幫助,不勝感激!

回答

相關問題