Mongodb 返回及;根据查找结果对用户进行排序

Mongodb 返回及;根据查找结果对用户进行排序,mongodb,Mongodb,我有一个用于用户的mongoDb集合和一个用于消息的集合。我的目标是返回 担任患者的角色 有消息(过滤掉所有没有消息的用户) 通过最新消息对结果进行排序(即具有最新消息的用户应位于结果顶部) 我对聚合相当陌生,但尝试使用聚合来解决这个问题。到目前为止,我的查询通过查找返回有消息的用户,但是它不会过滤没有消息的用户(2),也不会对结果进行排序(3) 虽然您可以通过聚合管道实现这一点,但更有效的解决方案是将最新消息的时间戳写入用户,此时无需加入即可检索所需的数据。在上述聚合步骤和预期结果之后,您能否

我有一个用于
用户
的mongoDb集合和一个用于
消息
的集合。我的目标是返回

  • 担任
    患者的
    角色
  • 有消息(过滤掉所有没有消息的用户)
  • 通过最新消息对结果进行排序(即具有最新消息的用户应位于结果顶部)
  • 我对聚合相当陌生,但尝试使用聚合来解决这个问题。到目前为止,我的查询通过查找返回有消息的用户,但是它不会过滤没有消息的用户(2),也不会对结果进行排序(3)


    虽然您可以通过聚合管道实现这一点,但更有效的解决方案是将最新消息的时间戳写入用户,此时无需加入即可检索所需的数据。

    在上述聚合步骤和预期结果之后,您能否发布示例结果?哇,这真是个好主意!我假设我随后能够获取用户一个非空的时间戳并对结果进行排序?对…………这很有效,我将它标记为答案,即使它没有显示聚合。再次感谢您的投入:)
    db.users.aggregate([
        
        {$match: {role: "patient"}},
        {$lookup:
         {
           from: "messages",
           localField: "phoneNumber",
           foreignField: "phoneNumber",
           as: "messages"
         }
    }
    
    ])