【发布时间】:2023-04-08 21:00:01
【问题描述】:
我有一个帖子集合,我想按“趋势”的顺序返回它们。
目前,我正在这样退货:
exports.list = async (req, res) => {
const posts = await Post.find({}).sort([['likes', -1], ['created', -1]]);
res.json(posts);
};
但是,这并不是真正的“趋势”帖子,因为它只是按照最喜欢和最近创建的顺序返回帖子。例如。在一年前创建了 100 个赞的东西,在今天创建的 99 个赞的帖子上方返回。 (这更像是一种趋势方法)。
我想实现一种方法,以降序返回最近创建的具有高赞的帖子。例如。一年前创建了 100 个赞的帖子,在今天创建了 99 个赞的帖子下方返回。
我可以在 mongoose .sort() 内部执行此操作吗?
编辑:
// Sample Document
[
{
likes: 99,
views: 1,
_id: 5f9714d33ba3664e3a31b6d4,
title: 'test',
author:
{ _id: 5f7b085711ba55fb0413ccd4,
username: 'Tester',
__v: 0
},
text: 'test',
comments: [],
created: 2019-10-26T14:53:49.498Z
},
{
likes: 100,
views: 53,
_id: 5f9714d33ba3664e3a31b6c5,
title: 'test2',
author:
{ _id: 5f7b085711ba55fb0413ccd4,
username: 'Tester',
__v: 0
},
text: 'test',
comments: [],
created: 2020-10-26T18:26:27.498Z
},
]
【问题讨论】:
-
但这不就是交换“created”和“likes”吗?无论如何,我会将这些数量合并为 1,称为“trendIndex”或类似的东西。
-
你能发布一些示例文件吗?
-
@Minsky 这是我最初的想法,但是如果我交换它们,它只会按日期排序并且实际上会忽略喜欢,除非有两个使用相同日期创建的帖子。
-
@wak786 添加到主要问题。谢谢。
-
sort({date: -1. likes:-1})对你有用吗?