我正在尝试使用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)
此查询出了什么问题?
答案 0 :(得分:1)
您没有提到输出是什么,但是根据您的代码,您似乎只获得没有源文档的数字。原因是您使用了
{$project:
likesCount:
$size: "like"}
获取计数。问题是$project
仅返回指定的字段(在这种情况下,仅返回likesCount
)。要解决此问题,您需要$addFields而不是$project
来获取源文档和新的计算字段:
{$addFields:
likesCount:
$size: "$like"}