MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak wykonać Order By w oparciu o wartości w MongoDB?

Musisz $project "waga" dla każdej wartości w kolejności w terminach MongoDB, co oznacza .aggregate() metoda:

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

Zagnieżdżone użycie trójskładnikowego $cond pozwala, aby każdy element dla "statusu" był traktowany jako uporządkowana wartość "wagi" w kolejności podanych argumentów.

To z kolei jest przekazywane do $sort , gdzie przewidywana wartość ( "waga" ) jest używana do sortowania wyników według ważonego dopasowania.

W ten sposób preferowana jest kolejność dopasowań „stanu”, która pojawia się jako pierwsza w posortowanych wynikach.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak przesyłać powiadomienia push za pomocą angular.js?

  2. Aplikacja podobna do Twittera korzystająca z MongoDB

  3. Meteor - collection.find() zawsze zwraca wszystkie pola

  4. Pierwszy hosting DBaaS MongoDB obsługujący platformę Azure dla sektora publicznego

  5. Eksport MySQL do MongoDB