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

Sortuj przedmiot według wartości mongodb

Ta ogólna koncepcja nazywa się „ważeniem”. Tak więc bez żadnego innego mechanizmu, wtedy obsługujesz to logicznie w zapytaniu MongoDB, logicznie "odwzorowując" wartości dla "wagi" na dokument.

Twoja metoda „rzutowania” i zmieniania pól obecnych w dokumencie to .aggregate() metoda, a konkretnie jest to $project etap potoku:

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

$cond operator tutaj to "trójargument" ( if/then/else ) warunek, w którym pierwszy argument jest instrukcją warunkową przychodzącą do wartości logicznej true|false . Jeśli true "wtedy" drugi argument jest zwracany jako wynik, w przeciwnym razie w odpowiedzi zwracany jest "else" lub trzeci argument.

W tym „zagnieżdżonym” przypadku, gdy „tak” jest dopasowaniem, przypisywany jest określony wynik „wagi”, w przeciwnym razie przechodzimy do następnego testu warunków, w którym jeśli „może” jest dopasowaniem, przypisywany jest kolejny wynik, lub w przeciwnym razie wynik to 0 ponieważ mamy tylko trzy możliwości do dopasowania.

Następnie $sort warunek jest stosowany w celu „uporządkowania” (w kolejności malejącej) wyników z największą „wagą” na górze.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. $strLenBytes vs $strLenCP w MongoDB:Jaka jest różnica?

  2. Metoda instancji Mongoose `this` nie odnosi się do modelu

  3. Które typy MongoDB nie są zachowywane przez mongoimport/mongoexport?

  4. Mongoid - zapytania według przywołanego dokumentu

  5. Jak mogę zaktualizować jeden dokument w zagnieżdżonej tablicy?