尝试按喜欢的数量对帖子进行排序 mongodb

Trying to sort posts by the number of likes mongodb

我正在尝试使用 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)

这个查询有什么问题?

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

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

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

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