使用MapReduce发现重复的文档

时间:2018-07-11 16:53:57

标签: javascript json mongodb

我有一个收藏,其中包含以下文件:

{
    "ID": "HD123",
    "IssueDate": "2018-07-10",
    "PayableAmount" : 739.71,
    "CurrencyCode" : "USD",
    "UserParty" : {
        "PartyIdentification" : {
            "ID" : "20338570041",
            "schemeAgencyID" : "SUNAT",
            "schemeID" : "RUC"
        }
    },
    "Response": {
        "Code": 0,
        "Description": "ACCEPTED"
    }
}

我的收藏集“ TRANSACTION”有数百万个文档,我想找出是否有重复的文档,这些文档的键为{ID,UserParty.PartyIdentification.ID Response.Code},即使Response.Code = 0,也可能是Response。代码= 99。

使用MapReduce我有:

var map = function() {
    if (this.Response.code == 0) {
        emit(this.ID + "|" + this.UserParty.PartyIdentification.ID + "|" + this.Response.Code, 1)
    };
};

var reduce = function(key, value) {
    return Array.sum(value);
};

db.TRANSACTION.mapReduce(map, reduce, {query: {}, out: {inline: 1}})

但是结果包含所有文档,即使没有重复也是如此。 我尝试过:

var results = db.TRANSACTION.mapReduce(map, reduce, {query: {}, out: {inline: 1}})
var r = results.results;
for (var i = 0; i < r.length; i++) {
    if (r[i].value > 1) {
        print(r[i]);
    }
}

但是我认为这不是一个好主意。您是否还有其他想法只返回重复的文档?

拥有数百万个文档,这太慢了。请帮助我。

0 个答案:

没有答案