<?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],
tp6 mongodb 连表(分页,排序,条件)查询
最新推荐文章于 2024-04-10 12:00:44 发布
本文详细介绍了如何在ThinkPHP6框架中使用Mongodb进行联表查询、分页操作以及实现数据排序,涵盖了基本查询语法和条件筛选,为PHP开发者提供了实际操作指导。
摘要由CSDN通过智能技术生成