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

Mengurutkan berdasarkan relevansi dengan MongoDB

MapReduce dan melakukannya di sisi klien akan menjadi terlalu lambat - Anda harus menggunakan kerangka kerja agregasi (baru di MongoDB 2.2).

Mungkin terlihat seperti ini:

db.collection.aggregate([
   { $match : { "tags": { "$in": ["bar", "hello"] } } },
   { $unwind : "$tags" },
   { $match : { "tags": { "$in": ["bar", "hello"] } } },
   { $group : { _id: "$title", numRelTags: { $sum:1 } } },
   { $sort : { numRelTags : -1 } }
   //  optionally
   , { $limit : 10 }
])

Perhatikan anggota pipa pertama dan ketiga terlihat identik, ini disengaja dan diperlukan. Berikut langkah-langkahnya:

  1. teruskan hanya dokumen yang memiliki tag "bar" atau "halo" di dalamnya.
  2. melepas larik tag (artinya dipecah menjadi satu dokumen per elemen tag
  3. hanya meneruskan tag dengan tepat "bar" atau "halo" (yaitu membuang sisa tag)
  4. kelompokkan menurut judul (bisa juga dengan "$_id" atau kombinasi lain dari dokumen asli menambahkan berapa banyak tag (dari "bar" dan "halo") yang dimilikinya
  5. urutkan dalam urutan menurun menurut jumlah tag yang relevan
  6. (opsional) batasi set yang dikembalikan ke 10 teratas.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb menghapus kolom kosong saat pembaruan

  2. MongoDB:Temukan Subdokumen dalam Parameter Pencocokan Array

  3. Bagaimana saya bisa menggunakan mongodump untuk membuang catatan yang cocok dengan rentang tanggal tertentu?

  4. Mengapa MongoDB tidak memperbarui kecuali saya memanggil .then res.json(...) setelah findOneAndUpdate?

  5. Memulai Dengan Basis Data Non-relasional Menggunakan Mongodb