我正在尝试使用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
仅返回指定的字段(在这种情况下,仅返回likesCount
)。要解决此问题,您需要$addFields而不是$project
来获取源文档和新的计算字段:{$addFields:
likesCount:
$size: "$like"}