猫鼬按日期排序,多个查询

Posted

技术标签:

【中文标题】猫鼬按日期排序,多个查询【英文标题】:mongoose sort by date, multiple queries 【发布时间】:2021-01-14 05:11:46 【问题描述】:

我的网站上有一个“已关注”部分,它检索用户关注的所有用户的帖子。有没有办法让这些按日期排序?

这是目前为止的代码:

exports.followedPosts = async (req, res) => 
  try 
    const user = await User.findById(req.user._id);
    const posts = [];

    for (const follow of user.follows) 
      const partPosts = await Post.find( author: follow.user )
        .select('-comments')
        .populate('author')
        .exec();
      for (const post of partPosts) 
        posts.push(post);
      
    
    res.send(posts);
   catch (err) 
    console.error(err.message);
    res.status(500).send('server error');
  
;

【问题讨论】:

https://***.com/a/31824896 回答你的问题了吗? 不,因为我需要排序以包含对 x 个关注用户的所有查询... 我可以分别为每个用户按日期排序,这不是问题。我正在检索 x 个用户的所有帖子,然后我需要按日期对它们进行排序 【参考方案1】:

您可以使用$in 在一个查询中找到关注用户的所有帖子,然后对该查询进行排序。示例:

let follow_users = user.follows.map(follow => follow.user);

const posts = await Post.find( author:  $in: follow_users  )
    .select('-comments')
    .sort(date: 1)
    .populate('author')
    .exec();

【讨论】:

以上是关于猫鼬按日期排序,多个查询的主要内容,如果未能解决你的问题,请参考以下文章

无法使用猫鼬按日期获取集合

在猫鼬中,我如何按日期排序? (node.js)

带排序的猫鼬查询不起作用

如何在使用猫鼬的查找查询中使用排序

使用未在 Mysql 中排序的多个日期范围查询给定月份的日期范围间隙

如何在猫鼬中查询多个集合