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

Cách sử dụng các biến trong hàm bản đồ MongoDB Map-Reduce

Như đã được chỉ ra bởi @Dave Griffith, bạn có thể sử dụng scope tham số của mapReduce chức năng.

Tôi đã đấu tranh một chút để tìm ra cách chuyển nó vào hàm đúng cách vì, như những người khác đã chỉ ra, tài liệu không chi tiết lắm. Cuối cùng, tôi nhận ra rằng mapReduce đang mong đợi 3 tham số:

  • chức năng bản đồ
  • giảm chức năng
  • đối tượng có một hoặc nhiều tham số được xác định trong tài liệu

Cuối cùng, tôi đã đến đoạn mã sau trong Javascript:

// I define a variable external to my map and to my reduce functions
var KEYS = {STATS: "stats"};

function m() {
    // I use my global variable inside the map function
    emit(KEYS.STATS, 1);
}

function r(key, values) {
    // I use a helper function
    return sumValues(values);
}

// Helper function in the global scope
function sumValues(values) {
    var result = 0;
    values.forEach(function(value) {
        result += value;
    });
    return result;
}

db.something.mapReduce(
    m,
    r,
    {
         out: {inline: 1},
         // I use the scope param to pass in my variables and functions
         scope: {
             KEYS: KEYS,
             sumValues: sumValues // of course, you can pass function objects too
         }
    }
);


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. thực hành tốt nhất của gộp django + PyMongo?

  2. union trên cùng một bộ sưu tập trong mongodb

  3. Cách sử dụng kết hợp $ unset và $ set trong mongoDB

  4. Kết nối với mongodb thông qua trình duyệt?

  5. Cuộc chiến của các cơ sở dữ liệu NoSQL - So sánh các chức năng NoSQL của MongoDB và MSSQL