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

Hình mẫu tốt hơn để lọc bộ sưu tập

Tôi cảm thấy đặc biệt có cảm hứng để trả lời câu hỏi này vì tài liệu tham khảo về DotA. :)

Vì vậy, nếu tôi hiểu vấn đề một cách chính xác, bạn không cần phải kiểm tra mọi kết hợp mà nên thêm nhiều lần khóa vào query đối tượng dựa trên nội dung của ba biến phiên. Tôi nghĩ điều sau đây về mặt logic tương đương với returnFilterQuery của bạn chức năng trên.

var returnFilterQuery = function() {
  var query = {game: 'dota'};

  var modifyQueryIfArray = function(key, sessionKey) {
    var value = Session.get(sessionKey);
    if (!_.isEmpty(value))
      query[key] = {$in: value};
  };

  modifyQueryIfArray('gamemode', 'dotaMode');
  modifyQueryIfArray('region', 'dotaRegion');
  modifyQueryIfArray('skill', 'dotaSkill');

  return Session.set('dotaFilter', query);
};

Lưu ý rằng isEmpty có thể là một kiểm tra an toàn hơn length trong trường hợp biến phiên không phải là một mảng.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Chìm Kafka Stream vào MongoDB bằng cách sử dụng PySpark Structured Streaming

  2. Quản lý các hoạt động dài hạn trong MongoDB

  3. Lỗi tham chiếu không được đưa ra từ lệnh gọi lại MongoDB

  4. TypeError tại / account / login / id phải là một phiên bản của (str, unicode, ObjectId), không phải <type 'int'>

  5. Dự án lọc thuộc tính trong mảng lồng nhau thứ hai