Как отсортировать Мангуста ответа в соответствии с определенной схемой

#node.js #mongodb #express #mongoose

Вопрос:

Мне нужна помощь в сортировке данных ответов в соответствии со схемой.

Это мой schema

 const RoleModel = new Schema({
    name    : {...
    },
    description:{...
    },
    permission:{...
    }
},{timestamps: false})
 

и вот мой текущий ответ

 {
  "message": "Displaying data",
  "data": [
    {
      "permission": {...
      },
      "_id": "615b378a3eca06e2194c2204",
      "name": "SuperAdmin",
      "__v": 0
    },
    {
      "permission": {...
      },
      "_id": "615b396f3eca06e2194c220a",
      "name": "Reporter",
      "__v": 0
    },
    {
      "permission": {...
      },
      "_id": "615b39dea1e3f384847014d1",
      "name": "Finance",
      "description": "nodescription",
      "__v": 0
    }
  ]
}
 

Я хочу, чтобы данные ответа были отсортированы следующим образом

     "data" : [
    {
        "_id" :615b378a3eca06e2194c2204, // first key
        "name": superadmin, // second key
        "permission":{...}, // third key
        "__v": 0 // last key
    },
    {
        "_id" :615b378a3eca06e2194c2204, // first key
        "name": superadmin, // second key
        "permission":{...}, // third key
        "__v": 0 // last key
    }
    ...
]
 

Должен ли я создать новую переменную с определенным ключевым объектом и назначить ей все данные или есть правильный способ сделать это?

Спасибо

Ответ №1:

Вы можете использовать project методологию find() в mongodb для отображения того, как вы хотите. Ниже у меня есть код для вас:

 db.studentdatas.find({},{_id:1, name:1, permission: 1, __v:1}).sort({name:1})
 

1 в find() показано, что вы хотите, чтобы это поле было видно/спроецировано, которое находится в {}.

Здесь вам не потребуется сортировка. Но если вы хотите отсортировать данные в любом поле на основе имеющихся в нем данных, вы можете использовать sort() либо 1, либо -1.

А для отображения данных ответа вы можете написать в nodejs/expressjs:

 res.send(response.data)
 

где ваше response.data то, что вы упомянули в своем вопросе :

  "data" : [
    {
        "_id" :615b378a3eca06e2194c2204, // first key
        "name": superadmin, // second key
        "permission":{...}, // third key
        "__v": 0 // last key
    },
    {
        "_id" :615b378a3eca06e2194c2204, // first key
        "name": superadmin, // second key
        "permission":{...}, // third key
        "__v": 0 // last key
    }
    ...
]
 

Я надеюсь, что это то, о чем вы хотели спросить.