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

Số lượng MongoDB () so với Tổng hợp

.count() nhanh hơn rất nhiều. Bạn có thể thấy việc triển khai bằng cách gọi

// Note the missing parentheses at the end
db.collection.count

trả về độ dài của con trỏ. của truy vấn mặc định (if count() được gọi mà không có tài liệu truy vấn), đến lượt nó được triển khai dưới dạng trả về độ dài của _id_ chỉ mục, iirc.

Tuy nhiên, một tập hợp đọc từng tài liệu và xử lý nó. Đây chỉ có thể là một nửa theo cùng một thứ tự độ lớn với .count() khi thực hiện nó chỉ hơn 100k tài liệu (cho và nhận tùy theo RAM của bạn).

Chức năng dưới đây đã được áp dụng cho một bộ sưu tập với một số mục nhập 12 triệu:

function checkSpeed(col,iterations){

  // Get the collection
  var collectionUnderTest = db[col];

  // The collection we are writing our stats to
  var stats = db[col+'STATS']

  // remove old stats
  stats.remove({})

  // Prevent allocation in loop
  var start = new Date().getTime()
  var duration = new Date().getTime()

  print("Counting with count()")
  for (var i = 1; i <= iterations; i++){
    start = new Date().getTime();
    var result = collectionUnderTest.count()
    duration = new Date().getTime() - start
    stats.insert({"type":"count","pass":i,"duration":duration,"count":result})
  }

  print("Counting with aggregation")
  for(var j = 1; j <= iterations; j++){
    start = new Date().getTime()
    var doc = collectionUnderTest.aggregate([{ $group:{_id: null, count:{ $sum: 1 } } }])
    duration = new Date().getTime() - start
    stats.insert({"type":"aggregation", "pass":j, "duration": duration,"count":doc.count})
  }

  var averages = stats.aggregate([
   {$group:{_id:"$type","average":{"$avg":"$duration"}}} 
  ])

  return averages
}

Và được trả lại:

{ "_id" : "aggregation", "average" : 43828.8 }
{ "_id" : "count", "average" : 0.6 }

Đơn vị là mili giây.

hth




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bản sao MongoDB không có thiết lập chính, cần thiết lập bản sao chính mới

  2. Hỗ trợ WSO2 DSS cho mongodb 3.x.x

  3. tổng số tài liệu phụ và danh sách mongodb

  4. Sử dụng toán tử $ slice để lấy phần tử cuối cùng của mảng

  5. Tùy chỉnh hoạt động nâng cấp của mgo