猫鼬:如何使用聚合搜索进行排序

时间:2021-01-16 19:55:07

标签: node.js mongoose

我有这个聚合搜索功能

filter = { 'games.game_info.game_time': -1 };
.aggregate([
                {
                    $match: {}
                },
                {
                    $project: {
                        games: 1,
                        game_number: {
                            $size: '$games'
                        }
                    }
                },
                {
                    $facet: {
                        paginatedResult: [ { $sort: filter } ]
                    }
                }
            ])

games 有这个数组。

  games:  [
      {
        game_id: '1',
        game_type: 'GTA5',
        game_info: {
          game_time: '2021-01-17 02:30:00.000Z',
          sports_code: '2'
        },
      },
      {
        game_id: '2',
        game_type: 'GTA5',
        game_info: {
          game_time: '2021-01-17 08:45:00.000Z',
          sports_code: '2'
        },
      }
    ]

我正在尝试按时间sort列表。但是,我坚持这一点。尝试了各种方法。如何让 filter 与 +1 或 -1 一起使用,以便按最近或最晚的时间对列表进行排序?

1 个答案:

答案 0 :(得分:1)

您可以这样排序。您也可以使用 $count 获取记录总数。

Games.aggregate([
        {
            $facet: {
                data: [
                    { $match: { game_type: 'GTA5' } },
                    { $sort: { 'game_info.game_time': -1 } }
                ],
                total_count: [
                     { $count: 'count' }
                ]
            }
        }
    ]);

希望它有帮助... :)