Tôi có một bộ sưu tập md5 ở mongodb. Tôi muốn tìm tất cả các bản sao. Cột md5 được lập chỉ mục. Bạn có biết cách nhanh chóng để làm điều đó bằng cách sử dụng bản đồ giảm hay không. Hoặc tôi có nên lặp lại tất cả các bản ghi và kiểm tra các bản sao theo cách thủ công không?Cách nhanh chóng để tìm các bản sao trên cột được lập chỉ mục trong mongodb
cách tiếp cận hiện tại của tôi sử dụng MapReduce lặp trên bộ sưu tập gần gấp đôi (giả sử rằng có số lượng rất nhỏ các bản sao):
res = db.files.mapReduce(
function() {
emit(this.md5, 1);
},
function (key, vals) {
return Array.sum(vals);
}
)
db[res.result].find({value: {$gte:1}}).forEach(
function (obj) {
out.duplicates.insert(obj)
});
Tôi không thể sử dụng gruping vì nó bị giới hạn ở 10k yếu tố (tôi có 3M). Nhưng lưu ý rằng MR sẽ chỉ trả về dữ liệu từ chỉ mục là thú vị. Tôi không biết điều đó. Cảm ơn! (+1) –