为了账号安全,请及时绑定邮箱和手机立即绑定

两个独立的 MongoDB 集合将结果组合起来进行循环,没有任何关系

两个独立的 MongoDB 集合将结果组合起来进行循环,没有任何关系

PHP
偶然的你 2023-07-01 15:38:30
我正在尝试创建一个包含投票和评论的活动源。两个集合之间没有任何关系。获取评论:$CommentsCollection = $this->db->comments;$options = ['sort' => ['created' => -1], 'limit' => 15];$data = array ();$resultComments = $CommentsCollection->find($data, $options);要获得选票:$VotesCollection = $this->db->votes;$options = ['sort' => ['created' => -1], 'limit' => 15];$data = array ();$resultVotes = $VotesCollection->find($data, $options);现在,我如何组合这两个单独的、不相关的集合结果并按创建(日期)对它们进行排序。我认为聚合或查找不是正确的方法,因为这两个表不相关。我只想合并结果并按日期排序,以便我可以循环并将它们显示在活动源上。
查看完整描述

2 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

我所做的是使用:

$finalArray = array_merge($resultComments, $resultVotes);

合并结果。然后按日期排序:

  usort($finalArray, function($a, $b) {
        return strtotime($a['created']) - strtotime($b['created']);
  });

是我想多了。


查看完整回答
反对 回复 2023-07-01
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

无需中间收集,有两种方式。

  1. unionWith您可以从 4.4 版本开始使用-参考

    但如果你的收藏量很大的话我不推荐。

  2. 您应该在后端合并。发出两个 http 请求并对结果进行排序。因为你得到了 30 条记录,所以后端速度会很快。


查看完整回答
反对 回复 2023-07-01
  • 2 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信