1、安装

composer require mongodb/mongodb
文档地址:
	https://github.com/mongodb/mongo-php-library
	https://docs.mongodb.com/php-library/current/tutorial/install-php-library/

2、实例化建立连接

$db = (new \MongoDB\Client)->catch_admin->order_list;
建立本地mongo连接,并使用catch_admin数据库,order_list集合

3、curd操作,本案例在tp6中使用mongodb

查询
//查询一条记录
$db -> findOne(['app_id'=>343]);

//查询多条记录
$db -> find(
        [
            'app_id'=>343,
            'price' => ['$lt'=>4900]
        ]
    )->toArray();
    
//查询多条记录 增加指定字段,排序,筛选等
$res = $db -> find(
    [
        'app_id'=>343,
        'price' => ['$lt'=>4900]
    ]
    , [
        'projection' => [
            'app_id' => 1,
            'price' => 1,
            'order_no' => 1,
        ],
        'skip' => 5,
        'limit' => 5,
        'sort' => ['price' => -1],
    ]
)->toArray();

//聚合查询
$db = (new \MongoDB\Client)->catch_admin->order_list;
$res = $db -> aggregate([
    ['$match'=>['price'=>['$lt'=>4900]]],
    //['$group'=>['_id'=>'$app_id','price_sum'=>['$sum'=>'$price'],'price_num'=>['$sum'=>1]]],
    ['$project'=>['_id'=>1,'app_id'=>1,'price'=>1,'order_no'=>1,'pay_time'=>1]],
    ['$sort'=>['app_id'=>1]],
    ['$skip'=>5],
    ['$limit'=>5]
])->toArray();
//查询price 小于4900的,并跳过前五条,只保留5条数据,等同于以下sql:
select id,app_id,price,order_no,pay_time from order_list where price < 4900 order by app_id asc limit 5,5;

添加数据
$db = (new \MongoDB\Client)->catch_admin->order_list;
//插入一条数据  getInsertedId()可省略
$data = Db::table('order_list_mysql')
    ->order('id','desc')
    ->find();
$db -> insertOne($data)->getInsertedId();//返回文档id

//批量插入数据 getInsertedIds()可省略
$data = Db::table('order_list_mysql')
    ->order('id','desc')
    ->limit(5)
    ->select()
    ->toArray();//从数据库中取出5条数据
$res = $db -> insertMany($data)->getInsertedIds();//返回文档的id集合


更新数据
$db = (new \MongoDB\Client)->catch_admin->order_list;
$data = [
    'app_id' => rand(1000,2000),
    'price' => rand(555555,99999989),
    'agent_bili' =>rand(80,120)
];
//更新一条数据
$db -> updateOne(
        ['app_id'=>494],
        ['$set'=>$data]
    );
//批量更新
$res = $db -> updateMany(
    ['app_id'=>['$in'=>[383,494]]],//等同于mysql中的where in 
    ['$set'=>$data]//更新的字段数据
);

//删除操作
//删除一条数据
$db -> deleteOne(
    ['price' =>999999]
)->getDeletedCount();//返回删除结果
//批量删除
$res = $db -> deleteMany(
    ['agent_bili'=>['$in'=>[900,83]]] //删除条件,等同于sql中的 where agent_bili in (83,900)
)->getDeletedCount();//返回删除的条数

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐