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

Bagaimana cara mendapatkan catatan N terbaru dari setiap grup di mongodb?

Di mongoDB 3.2 Anda dapat melakukan ini dengan menggunakan kueri agregat dari formulir berikut:

db.collection.aggregate(
  {$sort: {created: -1}},
  {$group: {_id:'$city', title:{$push: '$title'}},
  {$project: {_id:0, city: '$_id', mostRecentTitle: {$slice: ['$title', 0, 2]}}}
)

Sangat sulit untuk mencapai hal yang sama menggunakan mongoDB 3.0. Trik yang sangat kotor ada untuk mencapai ini di 3.0. Ini melibatkan beberapa langkah dan pengumpulan lainnya.

Pertama lakukan agregat dan keluarkan hasilnya ke koleksi sementara yang disebut 'aggr_out'

Kueri:

db.collection.aggregate([
  {$sort: {created: -1}},
  {$group: {_id:'$city', title:{$push: '$title'}},
  {$project: {city: '$_id', mostRecentTitle: '$title'}},
  {$out: 'aggr_out'}]
)

Dengan menggunakan kueri di atas, mostRecentTitle akan memiliki semua judul terbaru yang diurutkan dari indeks 0, 1, 2, ... Jika Anda senang dengan hasil ini menggunakan ini karena Anda sudah memiliki hasil dalam indeks 0,1 dan 2 dari mostRecentTitle. Judul lain dapat dengan mudah diabaikan di sisi aplikasi.

Masih jika Anda tidak senang, lakukan pembaruan pada koleksi keluaran 'aggr_out', dan baca data dari koleksi ini. Pertanyaannya adalah,

db.aggr_out.update(
  {},
  {$push: {
    mostRecentTitle: {$each:[], $slice:3}
    }
  }
)

Operasi di atas akan mengiris array mostRecentTitle sehingga memiliki tiga judul terbaru. Bacalah koleksi ini untuk mendapatkan hasil yang Anda inginkan.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. (simpul:71307) [DEP0079] Peringatan Penghentian

  2. Bagaimana ObjectID MongoDB 12 byte?

  3. Menanamkan balasan pesan di dalam pesan induk dengan mongodb menggunakan mongoid

  4. Ikhtisar MongoDB Atlas:Bagian Satu

  5. Kiat Perencanaan Skema MongoDB