MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да извършите поръчка на базата на стойност в MongoDB?

Трябва да $project "тегло" за всяка стойност по реда в термините на MongoDB и това означава .aggregate() метод:

db.users.aggregate([
    { "$project": {
        "status": 1,
        "a_field": 1,
        "another_field": 1,
        "pretty_much_every_field": 1,
        "weight": {
            "$cond": [
                { "$eq": [ "$status", "A" ] },
                10,
                { "$cond": [ 
                    { "$eq": [ "$status", "B" ] },
                    8,
                    { "$cond": [
                        { "$eq": [ "$status", "C" ] },
                        6,
                        { "$cond": [
                            { "$eq": [ "$status", "D" ] },
                            4,
                            0
                        ]}
                    ]}
                ]}
            ] 
        }
    }},
    { "$sort": { "weight": -1 } }
])

Вложеното използване на тернарния $cond позволява всеки елемент за „статус“ да се разглежда като подредена стойност на „тегло“ в реда на дадените аргументи.

Това от своя страна се подава към $sort , където прогнозираната стойност ( "тегло") се използва за сортиране на резултатите, както се оценяват от претегленото съвпадение.

Така че по този начин се дава предпочитание на реда на съвпаденията на „статус“ по отношение на това кое се появява първо в сортираните резултати.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Стъпки за инсталиране на MongoDB на Amazon Linux

  2. Примерни оператори на MongoDB

  3. mongo.so:> недефиниран символ:php_json_encode в Unknown на ред 0. След инсталиране mongo драйвер за php

  4. Как да настроите обема на данните на docker mongo

  5. Не мога да инсталирам mongodb doctrine в symfony2 с composer