尝试按喜欢的数量对帖子进行排序 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"}
我正在尝试使用 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"}