node js как отсортировать коллекцию - PullRequest
0 голосов
/ 05 августа 2020

У меня есть коллекция mongodb с большим количеством записей. + 10000.

Все они имеют одинаковые параметры:

  • Val_string
  • T1_string
  • T2_string

Я получаю это через запрос на получение из своего мобильного приложения, однако порядок неверен.

Как мне отсортировать мою коллекцию по строке Val, которая в данном случае представляет собой число от 1 до 10000.

Я использую mon goose mongodb и node js.

В настоящее время я запрашиваю коллекцию и получаю 5 результатов, отправляю их, а затем l oop еще 5, пока я не прочту все результаты.

Итак, мне нужно отсортировать коллекцию перед отправкой этих данных.


app.get("/testmethod", function(req, res)
{

    mongoose.connect("mongodb://localhost:27017/CTI", {useNewUrlParser: true},function(err, client){
        if(err) {
            console.log(err)
        }
        else
        {
            client.db.collection("datas").find().limit(items_to_send).skip(Sent_data).toArray(function(err, result) {
            if (err) {throw err;}
            //console.log(result);
            Sent_data = Sent_data + items_to_send;
            db.close();

            var D1_T1 = result[0].T1_String;
            var D1_T2 = result[0].T2_String;
            var D2_T1 = result[1].T1_String;
            var D2_T2 = result[1].T2_String;
            var D3_T1 = result[2].T1_String;
            var D3_T2 = result[2].T2_String;
            var D4_T1 = result[3].T1_String;
            var D4_T2 = result[3].T2_String;
            var D5_T1 = result[4].T1_String;
            var D5_T2 = result[4].T2_String;
            
            res.status(200).send({
                D1_T1: D1_T1,
                D1_T2: D1_T2,
                D2_T1: D2_T1,
                D2_T2: D2_T2,
                D3_T1: D3_T1,
                D3_T2: D3_T2,
                D4_T1: D4_T1,
                D4_T2: D4_T2,
                D5_T1: D5_T1,
                D5_T2: D5_T2
                });
            });
        }//End of else
    });//End of connect
});

Я хочу сортировку, чтобы упорядочить всю коллекцию по полю строки val, которое идет из 1-10000

1 Ответ

1 голос
/ 05 августа 2020

У вас есть как показано ниже

client.db.collection("datas").find().limit(items_to_send).skip(Sent_data)

Вы можете добавить .sort({fieldName:sortOrder})

sort order: 1 / -1 (des c)

client.db.collection("datas").find().limit(items_to_send)
                  .skip(Sent_data).sort({"val_string":1})

Сортировка следует лексикографическому порядку, поэтому не проблема быть строкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...