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

Сортиране на елемент по стойност mongodb

Това като общо понятие се нарича "претегляне". Така че без да има друг механизъм, вие обработвате това логически в заявка на MongoDB, като „прожектирате“ стойностите за „теглото“ логически в документа.

Вашият метод за „проектиране“ и промяна на присъстващите полета във вашия документ е .aggregate() метод и по-конкретно това е $project етап на тръбопровод:

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

$cond оператор тук е "ternary" ( if/then/else ) условие, при което първият аргумент е условен оператор, достигащ до булево true|false . Ако true "then" вторият аргумент се връща като резултат, в противен случай в отговор се връща "else" или трети аргумент.

В този "вложен" случай, когато "да" е съвпадение, тогава се присвоява определен резултат за "тегло", в противен случай преминаваме към следващия тест за условие, където когато "може би" е съвпадение, тогава се присвоява друг резултат, или в противен случай резултатът е 0 тъй като имаме само три възможности за съпоставяне.

След това $sort условието се прилага, за да се "подредят" добре (в низходящ ред) резултатите с най-голямо "тегло" отгоре.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. В Mongodb, как да проверя дали всички документи са уникални за стойност?

  2. Проблем с MongoDB и upsert

  3. Търсене на вложени документи в MongoDB

  4. Страниране от страна на сървъра с поле за масив от низове на един документ

  5. Заключване на документ в MongoDB