сортировка коллекции на основе нескольких полей в mongodb

#mongodb

#mongodb

Вопрос:

У меня есть требование, когда мне нужно отсортировать коллекцию на основе разных полей. Ниже приведена моя запись в базе данных

 db.requests.find()

{ "_id" : ObjectId("5caf805f50ca58361589924b"),"type" : "adhoc",  "immediate" : false, "place": "london"}
{ "_id" : ObjectId("5c947e37015bfe78a80e5349"),"type" : "adhoc",  "immediate" : true, "place": "tokoy" }
{ "_id" : ObjectId("5c9481fa015bfe78a80e534d"),"type" : "periodic",  "immediate" : false , "place": "bangalore"}
{ "_id" : ObjectId("5c94ae95015bfe78a80e5363"),"type" : "adhoc",  "immediate" : true, "place": "lanka"}
{ "_id" : ObjectId("5c875a96015bfe7b5e772ea3"),"type" : "adhoc",  "immediate" : false, "place": "jakarta"}
{ "_id" : ObjectId("5c9481fa015bfe78a80e534d"),"type" : "periodic",  "immediate" : false , "place": "europe"}
  

учитывая
Если «тип» равен «adhoc», то «немедленный» может быть либо «true», либо «false».
Если «тип» является «периодическим», то «немедленный» всегда будет «ложным»

Я просто хочу получить результат в следующем порядке:

  1. все записи с «immediate»: «true»

  2. все записи с «type»: «adhoc» и «immediate»: «false»

  3. все записи с «типом»: «периодический»

Результат должен быть следующим:

         { "_id" : ObjectId("5c947e37015bfe78a80e5349"),"type" : "adhoc",  "immediate" : true, "place": "tokoy" }
        { "_id" : ObjectId("5c94ae95015bfe78a80e5363"),"type" : "adhoc",  "immediate" : true, "place": "lanka"}
        { "_id" : ObjectId("5caf805f50ca58361589924b"),"type" : "adhoc",  "immediate" : false, "place": "london"}
        { "_id" : ObjectId("5c875a96015bfe7b5e772ea3"),"type" : "adhoc",  "immediate" : false, "place": "jakarta"}
        { "_id" : ObjectId("5c9481fa015bfe78a80e534d"),"type" : "periodic",  "immediate" : false , "place": "bangalore"}
        { "_id" : ObjectId("5c9481fa015bfe78a80e534d"),"type" : "periodic",  "immediate" : false , "place": "europe"}