Пн go Ошибка: этап $ sort должен иметь хотя бы один ключ сортировки - PullRequest
0 голосов
/ 13 июля 2020
  let sort = {}
    if (req.params.orderby === 'pricelow') {
        sort.price = 1
    }
    if (req.params.orderby === 'pricehigh') {
        sort.price = -1
    }

 Products.aggregate([
        { $match: {} },    // This is your query
        { $skip: skip },   // Always apply 'skip' before 'limit'
        { $limit: limit }, // This is your 'page size'
        // { $sort: sort }
    ])

Я пытаюсь отсортировать свои данные, и если параметр url orderby существует, я хочу передать сортировку в моем агрегате mongodb. Однако, когда нет какого-либо условия сортировки, я хочу оставить его пустым, как отсутствие условия сортировки. Насколько я понимаю из полученной ошибки, а именно:

MongoError: $sort stage must have at least one sort key

условие сортировки не может быть пустым. Есть ли способ обойти это, используя агрегацию в mongodb? Как я могу просто получить результаты, если не было условия сортировки, например по умолчанию.

1 Ответ

0 голосов
/ 13 июля 2020

, если вы хотите делать такие вещи, попробуйте это.

    let aggregateQuery =[
            { $match: {} },    // This is your query
            { $skip: skip },   // Always apply 'skip' before 'limit'
            { $limit: limit }, // This is your 'page size'
        ];
    
    let sort = {}
    if (req.params && req.params.orderby === 'pricelow') {
        sort.price = 1;
    aggregateQuery.push({$sort:sort});
    }
    if (req.params && req.params.orderby === 'pricehigh') {
        sort.price = -1
    aggregateQuery.push({$sort:sort});
    }

 Products.aggregate(aggregateQuery);

Надеюсь, это вам поможет.

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