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

MongoDB:Сортиране по съществуващо поле и след това по азбучен ред

Какво ще кажете за:

db.users.find({ "name": { "$exists": true } }).sort({'name': 1})

Защото в края на краищата, когато поле, по което искате да сортирате, действително не присъства, тогава върнатата стойност е null и следователно "по-ниско" в реда от всеки положителен резултат. Така че има смисъл да изключите тези резултати, ако наистина търсите само нещо със съответстваща стойност.

Ако наистина искате всички резултати там и независимо от null съдържание, тогава предлагам да ги "претеглите" чрез .aggregate() :

db.users.aggregate([
     { "$project": {
         "name": 1,
         "score": {
             "$cond": [
                 { "$ifNull": [ "$name", false ] },
                 1,
                 10
             ]
         }
     }},
     { "$sort": { "score": 1, "name": 1 } }
])

И това премества всички null води до „края на веригата“, като присвоява стойност като такава.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Изберете дължина на низа в mongodb

  2. Mongoose Compound Index Unique + Sparse

  3. Пример за слушател на персонализирани събития в документацията на Grails

  4. Как да актуализирате множество елементи на масив в mongodb

  5. Как да задам диапазон на отместване на буфера в MongoDB, не позволява качване на повече от 16 MB файл в BSON обект?