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

Urutkan item berdasarkan nilai mongodb

Ini sebagai konsep umum disebut "pembobotan". Jadi tanpa mekanisme lain, maka Anda menangani ini secara logis dalam kueri MongoDB dengan "memproyeksikan" nilai untuk "bobot" ke dalam dokumen secara logis.

Metode Anda untuk "memproyeksikan" dan mengubah bidang yang ada di dokumen Anda adalah .aggregate() metode, dan khususnya $project tahap saluran:

db.collection.aggregate([
    { "$project": {
        "getthisfirst": 1,
        "weight": {
            "$cond": [
                { "$eq": [ "$getthisfirst", "yes" ] },
                10,
                { "$cond": [
                    { "$eq": [ "$getthisfirst", "maybe" ] },
                    5,
                    0
                ]}
            ]
        }
    }},
    { "$sort": { "weight": -1 } }
]);

$cond operator di sini adalah "ternary" ( if/then/else ) kondisi di mana argumen pertama adalah pernyataan bersyarat yang sampai ke boolean true|false . Jika true "maka" argumen kedua dikembalikan sebagai hasilnya, jika tidak, argumen "lain" atau ketiga dikembalikan sebagai tanggapan.

Dalam kasus "bersarang" ini, maka di mana "ya" cocok maka skor "bobot" tertentu diberikan, jika tidak, kita beralih ke tes kondisi berikutnya di mana ketika "mungkin" cocok maka skor lain diberikan, atau jika tidak, skornya adalah 0 karena kita hanya memiliki tiga kemungkinan untuk dicocokkan.

Kemudian $sort kondisi diterapkan untuk, baik "urutkan" ( dalam urutan menurun ) hasil dengan "bobot" terbesar di atas.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana melakukan Pencarian Teks Lengkap di MongoDB

  2. Bagaimana cara mengagregasi berdasarkan tanggal ketika stempel waktu penuh diberikan dalam kerangka agregasi?

  3. Ketika kursor mongodb akan kedaluwarsa

  4. Bagaimana cara memuat data di MongoDB yang berjalan di Host dari dalam Docker yang berjalan di mesin yang sama?

  5. MongoDB - Mengapa indeks _id tidak membuat kesalahan pada entri duplikat?