tp6 mongodb 连表(分页,排序,条件)查询

本文详细介绍了如何在ThinkPHP6框架中使用Mongodb进行联表查询、分页操作以及实现数据排序,涵盖了基本查询语法和条件筛选,为PHP开发者提供了实际操作指导。
摘要由CSDN通过智能技术生成

<?php

namespace app\study\controller\study_a;

use think\facade\View;
use think\facade\Db;
use think\paginator\driver\Bootstrap;
use app\common\controller\MobileBaseA;
#  https://www.cnblogs.com/cangqinglang/p/14783971.html
class Mongodb  extends MobileBaseA
{
   

    /**
     * 分页,连接表条件,排序等 paginate # http://study.xxx.cn/mongodb-index.html 数据库测试
     */
    public function index(){
   

        $page  = input('param.page',1);

        $limit = input('param.size',10);// 每页 10 条记录

        $skip  = ($page - 1) * $limit;

        $pipelines = [
            // ['$match'=>["_id"=>new \MongoDB\BSON\ObjectId("5cb7e580a6c98abc468b458b")]],
            // ['$match'=>["name"=>"xxx有限公司"]],
          // ['$match'=>["removed"=>false]],
            ['$addFields'=>['companyidStr'=>['$toString'=>'$_id']]],
                [
                    '$lookup'=>[
                        'from'=>'oa_company_member_pay',
                        'localField'=>'companyidStr',
                        'foreignField'=>'company_id',
                        'as'=>'company_pay'
                    ],
                ],
          // 关键词的 位置顺序 不能搞错
          ['$unwind'=>"\$company_pay"],// 只获取 2021 的这条数据(company_pay 只有1条数据,1条数据的数组外壳直接剥离成了对象,不然 把2022,2020的数据也展示出来,相当于company_pay是个数组)  并不会 展示 2022  2020 的记录数据
          ['$match'=>["company_pay.year"=>2021]],// 相当于 就是  oa_company_member_pay 表下的 year  但是 不能替换成  oa_company_member_pay
   //       [
   //              '$skip'=>$skip,// 接受一个正整数,指定要跳过的最大文档数。
   //       ],
   //       [
   //              '$limit'=>$limit,// 接受一个正整数,指定要传递的最大文档数。
   //       ],
           //  [
           //       '$sort'=>['_id'=>1]   //排序   1升序 -1倒叙
              // ],
            // [
            //    '$count'=>'count'  // 当前 记录个数  10 个
            // ],
        ];
        // 获取 分页数据
        $pipeline1 = array_merge($pipelines,[['$skip'=>$skip],
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值