MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Xóa các bản ghi trùng lặp bằng MapReduce

Tôi chưa sử dụng mongoDB nhưng tôi đã sử dụng mapreduce. Tôi nghĩ rằng bạn đang đi đúng hướng về các chức năng mapreduce. Để loại trừ số 0 và các chuỗi trống, bạn có thể thêm dấu kiểm trong chính hàm bản đồ .. đại loại như

m = function () { 
  if(this.MlsId!=0 && this.MlsId!="") {    
    emit(this.MlsId, 1); 
  }
} 

Và giảm sẽ trả về các cặp khóa-giá trị. Vì vậy, nó phải là:

r = function(k, vals) {
  emit(k,Arrays.sum(vals);
}

Sau đó, bạn sẽ có một tập hợp các cặp khóa-giá trị ở đầu ra sao cho khóa là MlsId và giá trị là số thimes ID cụ thể này xuất hiện. Tôi không chắc về phần db.drop (). Như bạn đã chỉ ra, nó có thể sẽ xóa tất cả MlsIds thay vì chỉ xóa những cái trùng lặp. Để giải quyết vấn đề này, có thể bạn có thể gọi drop () trước rồi tạo lại MlsId một lần. Điều đó có hiệu quả với bạn không?



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoError:Tùy chọn 'con trỏ' là bắt buộc, ngoại trừ trường hợp tổng hợp với đối số giải thích

  2. Bảo mật Pre-Emptive với Ghi nhật ký Kiểm tra cho MongoDB

  3. MongoDB $ toUpper

  4. Không thể sử dụng lệnh mongo, hiển thị lệnh không tìm thấy trên mac

  5. DeprecationWarning:collection.findAndModify không được dùng nữa. Sử dụng findOneAndUpdate, findOneAndReplace hoặc findOneAndDelete thay thế?