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

MongoDB:Sortuj według istniejących pól, a następnie alfabetycznie

A co powiesz na:

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

Ponieważ w końcu jeśli pole, według którego chcesz sortować, nie jest faktycznie obecne, zwracana wartość to null i dlatego "niżej" w kolejności niż jakikolwiek pozytywny wynik. Dlatego warto wykluczyć te wyniki, jeśli naprawdę szukasz tylko czegoś o pasującej wartości.

Jeśli naprawdę chcesz, aby były tam wszystkie wyniki i niezależnie od null treści, sugeruję „zważenie” ich za pomocą .aggregate() :

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

A to przenosi wszystkie null wyniki do "końca łańcucha" poprzez przypisanie wartości jako takiej.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Node.js Mongoose.js ciąg do funkcji ObjectId

  2. Co to jest błąd Mongoose Cast to ObjectId nie powiodło się dla wartości XXX w ścieżce _id?

  3. Zmienić datę ciągu na datę ISO w MongoDB?

  4. Ogranicz użycie pamięci RAM MongoDB

  5. GridFSDBFile w wersji wiosennego rozruchu 2.0.1