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

Đếm chọn MongoDB (x riêng biệt) trên một cột được lập chỉ mục - đếm kết quả duy nhất cho các tập dữ liệu lớn

1) Cách dễ nhất để làm điều này là thông qua khung tổng hợp. Điều này sử dụng hai lệnh "$ group":lệnh đầu tiên nhóm theo các giá trị riêng biệt, lệnh thứ hai đếm tất cả các giá trị riêng biệt

pipeline = [ 
    { $group: { _id: "$myIndexedNonUniqueField"}  },
    { $group: { _id: 1, count: { $sum: 1 } } }
];

//
// Run the aggregation command
//
R = db.runCommand( 
    {
    "aggregate": "myCollection" , 
    "pipeline": pipeline
    }
);
printjson(R);

2) Nếu bạn muốn làm điều này với Bản đồ / Thu nhỏ, bạn có thể. Đây cũng là một quá trình gồm hai giai đoạn:trong giai đoạn đầu, chúng tôi xây dựng một bộ sưu tập mới với danh sách mọi giá trị riêng biệt cho khóa. Trong lần thứ hai, chúng tôi thực hiện đếm () trên bộ sưu tập mới.

var SOURCE = db.myCollection;
var DEST = db.distinct
DEST.drop();


map = function() {
  emit( this.myIndexedNonUniqueField , {count: 1});
}

reduce = function(key, values) {
  var count = 0;

  values.forEach(function(v) {
    count += v['count'];        // count each distinct value for lagniappe
  });

  return {count: count};
};

//
// run map/reduce
//
res = SOURCE.mapReduce( map, reduce, 
    { out: 'distinct', 
     verbose: true
    }
    );

print( "distinct count= " + res.counts.output );
print( "distinct count=", DEST.count() );

Lưu ý rằng bạn không thể trả về kết quả của bản đồ / thu nhỏ nội tuyến, vì điều đó có thể sẽ vượt quá giới hạn kích thước tài liệu 16MB. Bạn có thể lưu phép tính trong một tập hợp và sau đó đếm () kích thước của tập hợp hoặc bạn có thể nhận số lượng kết quả từ giá trị trả về của mapReduce ().



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB riêng biệt ()

  2. Chèn dữ liệu vào mảng lồng nhau trong mongodb

  3. Xóa một trường khỏi tất cả các phần tử trong mảng trong mongodb

  4. Tính toán giá trị bỏ qua cho bản ghi đã cho để phân trang được sắp xếp

  5. Meteor:mã thoát mongo không mong muốn 100