尝试按喜欢的数目对mongodb进行排序

时间:2018-08-19 02:55:04

标签: javascript mongodb coffeescript

我正在尝试使用expressjs和mongodb按喜欢的次数对帖子进行排序。

   get "postsByLikes/:category", (req, res, next) ->
      category = req.params.category
      db.posts.aggregate([
        {$match:
          type: "post"
          category: category}
        {$project:
          likesCount:
            $size: "like"}
        {"$sort": 
          "likesCount": -1}
      ]).toArray (err, posts) ->

        res.send(posts)

此查询出了什么问题?

1 个答案:

答案 0 :(得分:1)

您没有提到输出是什么,但是根据您的代码,您似乎只获得没有源文档的数字。原因是您使用了

{$project:
      likesCount:
        $size: "like"}

获取计数。问题是$project仅返回指定的字段(在这种情况下,仅返回likesCount)。要解决此问题,您需要$addFields而不是$project来获取源文档和新的计算字段:

{$addFields:
      likesCount:
        $size: "$like"}