我有一个收藏,其中包含以下文件:
{
"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]);
}
}
但是我认为这不是一个好主意。您是否还有其他想法只返回重复的文档?
拥有数百万个文档,这太慢了。请帮助我。