MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

MongoDB tampaknya memilih indeks yang salah saat melakukan agregat

Anda mungkin ingin membaca dokumen mengenai $sort kinerja :

Juga, perlu diingat bahwa ini disebut 'agregasi pipa ' untuk sebuah alasan. Tidak masalah di mana Anda mengurutkan setelah mencocokkan. Jadi solusinya seharusnya cukup sederhana:

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 } }
])

Pemeriksaan apakah bidang file ada mungkin tidak diperlukan ketika dijamin bahwa bidang tersebut ada di setiap catatan. Ini tidak ada salahnya, karena ada indeks di lapangan. Sama halnya dengan pengurutan tambahan:karena kami memastikan bahwa hanya dokumen yang berisi bidang file yang masuk ke pipeline, indeks harus digunakan.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. $proyeksi vs $elemMatch

  2. Mongo DB:Bagaimana cara menyalin Dokumen dari satu koleksi dan menambahkannya sebagai bidang ke dokumen terkait dari koleksi lain?

  3. Mongodb:Temukan semua dokumen di mana setidaknya satu elemen array tidak cocok?

  4. MongoDB:tidak dapat melakukan upsert jika objek kueri dan objek pembaruan berisi properti yang sama, 'Tidak dapat menerapkan pengubah $addToSet ke non-array'

  5. Agregat $lookup tidak mengembalikan elemen urutan array asli