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

Gặp sự cố khi tách và đếm dữ liệu trong CSV trong MONGODB (Có giá trị Null trong các cột như tên column :)

Tôi nghĩ rằng tôi đã phát hiện ra vấn đề. Xem xét dữ liệu đầu vào sau:

{_id: 1, characters: ""}
{_id: 2, characters: "a, b, c"}
{_id: 3, characters: "a, b, c"}

> db.collection.mapReduce(map, reduce, {out: { inline : 1}})
"exception: reduce -> multiple not supported yet"

Thông báo lỗi này chỉ ra rằng MR hiện không thể được sử dụng để trả về một mảng giá trị. Nếu bạn nhìn vào chức năng giảm của mình:

reduce = function(key, values) {
    return values;
}

"giá trị" sẽ là một mảng "array.length" được nhóm lại với nhau bằng khóa. Vì khóa "a, b, c" được phát ra hai lần (cùng một logic theo sau cho nhiều tài liệu có ""), các giá trị (trong ví dụ của tôi) là một mảng có hai phần tử và MR không thể trả về mảng.

Nếu một tài liệu được phát ra cho một khóa cụ thể (trường hợp của _id:1), thì hàm giảm sẽ không được gọi. Điều này giải thích tại sao bạn không nhận được thông báo lỗi khi bạn không phát ra các ký tự rỗng.

Để thao tác MR này hoạt động, bạn cần tạo một tài liệu duy nhất cho {ký tự:""}. Nếu bạn cung cấp thêm thông tin về dữ liệu của mình, chúng tôi có thể giúp tìm ra các giải pháp thay thế.

CHỈNH SỬA:

Hàm giảm sau đây sẽ đảm bảo rằng một giá trị duy nhất, thay vì một mảng, được trả về:

reduce = function(key, values) {
        return values[0];
}

CHỈNH SỬA 2:

Để tránh lỗi, "errmsg":"exception:map gọi không thành công:JS Lỗi:TypeError:this.characters không có thuộc tính nào nofile_b:1", "code":9014 ...

map = function() { 
    if (this.characters != null){ 
         var array = this.characters.split(','); 
         emit(this.characters, array.length);
    } 
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách định cấu hình cổng mới cho mongodb

  2. Truy xuất các tài liệu con khớp với giá trị lớn nhất trong mảng

  3. Mongoose TypeError:Người dùng không phải là hàm tạo

  4. Truy vấn cập nhật Mongo db không hoạt động trong các tài liệu được nhúng trong azure cosmos db

  5. Hiểu và quản lý dung lượng đĩa trên máy chủ MongoDB của bạn