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

MongoDB dường như chọn sai chỉ mục khi thực hiện tổng hợp

Bạn có thể muốn đọc tài liệu liên quan đến $sort hiệu suất :

Ngoài ra, hãy nhớ rằng nó được gọi là 'tổng hợp đường ống 'vì một lý do. Đơn giản là bạn sắp xếp ở đâu sau khi đối sánh không quan trọng. Vì vậy, giải pháp phải khá đơn giản:

db.access_log.aggregate([
  {
       "$match": { 
          "visit_dt": {
             "$gte": ISODate('2015-03-09'),
             "$lt": ISODate('2015-03-11')
           },
           "file": {"$exists": true }
        } 
  },
  { "$sort": { "file": 1 } },
  { "$project": { "file": 1,  "_id": 0 } },
  { "$group": { "_id": "$file", "count": { "$sum": 1 } } },
  { "$sort": { "count": -1 } }
])

Kiểm tra ướt trường tệp tồn tại có thể không cần thiết khi nó được đảm bảo rằng trường tồn tại trong mọi bản ghi. Điều này không ảnh hưởng gì, vì có một chỉ số trên sân. Tương tự với sắp xếp bổ sung:vì chúng tôi đảm bảo rằng chỉ các tài liệu chứa trường tệp mới vào đường dẫn, nên chỉ mục sẽ được sử dụng.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách tạo dịch vụ CUPS cho mongoDB?

  2. Cập nhật mảng Mongo:xóa khóa động

  3. Cách tạo trình rút ngắn URL với Node.js và MongoDB

  4. trường tự động tăng toàn cầu trong MongoDb

  5. mongoose tìm và cập nhật loại bỏ các trường khác