Giter Club home page Giter Club logo

hyperf-mongodb's Introduction

hyperf-mongodb

介绍

用于hyperf的mongodb连接池组件,暂不支持协程。基于composer项目yumufeng/hyperf-mongodb和项目mongodb/mongodb做了个性化的优化。

hyperf mongodb pool

composer require adamchen1208/hyperf-mongodb

config

在/config/autoload目录里面创建文件 mongodb.php 添加以下内容

return [
    'default' => [
             'username' => env('MONGODB_USERNAME', ''),
             'password' => env('MONGODB_PASSWORD', ''),
             'host' => env('MONGODB_HOST', '127.0.0.1'),
             'port' => env('MONGODB_PORT', 27017),
             'db' => env('MONGODB_DB', 'test'),
             'authMechanism' => 'SCRAM-SHA-256',
             //设置复制集,没有不设置
             //'replica' => 'rs0',
            'pool' => [
                'min_connections' => 3,
                'max_connections' => 1000,
                'connect_timeout' => 10.0,
                'wait_timeout' => 3.0,
                'heartbeat' => -1,
                'max_idle_time' => (float) env('MONGODB_MAX_IDLE_TIME', 60),
            ],
    ],
];

使用案例

使用注解,自动加载 \Hyperf\Mongodb\Mongodb

/**
 * @Inject()
 * @var Mongodb
*/
 protected $mongodb;

tips:

查询的值,是严格区分类型,string、int类型的哦

查询一条数据

$where = ['_id' => '1'];
$result = $this->$mongodb->findOne('test', $where);

查询全部数据

$where = ['_id' => '1'];
$result = $this->$mongodb->findAll('test', $where);

分页查询

$list = $this->$mongodb->findPagination('article', 10, 0, ['author' => $author]);

查询一条数据(_id自动转对象)

$where = ['_id' => '1'];
$result = $this->$mongodb->findOneId('test', $where);

查询全部数据(_id自动转对象)

$where = ['_id' => '1'];
$result = $this->$mongodb->findAllId('test', $where);

分页查询(_id自动转对象)

$list = $this->$mongodb->findPaginationId('article', 10, 0, ['author' => $author]);

插入一条数据

$insert = [
            '_id' => '',
            'password' => ''
];
$this->$mongodb->insert('test',$insert);

插入批量数据

$insert = [
            [
                '_id' => '',
                'password' => ''
            ],
            [
                '_id' => '',
                'password' => ''
            ]
];
$this->$mongodb->insertAll('test',$insert);

更新

$where = ['_id'=>'1112313423'];
$updateData = [];

$this->$mongodb->updateColumn('test', $where,$updateData); // 只更新数据满足$where的行的列信息中在$newObject中出现过的字段
$this->$mongodb->updateRow('test',$where,$updateData);// 更新数据满足$where的行的信息成$newObject

更新(_id自动转对象)

$where = ['_id'=>'1112313423'];
$updateData = [];

$this->$mongodb->updateColumnId('test', $where,$updateData); // 只更新数据满足$where的行的列信息中在$newObject中出现过的字段
$this->$mongodb->updateRowId('test',$where,$updateData);// 更新数据满足$where的行的信息成$newObject

删除

$where = ['_id'=>'1112313423'];
$all = true; // 为false只删除匹配的一条,true删除多条
$this->$mongodb->deleteOne('test',$where,$all);

批量删除

$where = ['_id'=>'1112313423'];
$all = true; // 为false只删除匹配的一条,true删除多条
$this->$mongodb->deleteMany('test',$where,$all);

删除(_id自动转对象)

$where = ['_id'=>'1112313423'];
$all = true; // 为false只删除匹配的一条,true删除多条
$this->$mongodb->deleteOneId('test',$where,$all);

统计

$filter = ['isGroup' => "0", 'wechat' => '15584044700'];
$count = $this->$mongodb->count('test', $filter);

聚合查询

sqlmongodb 关系对比图

SQL MongoDb
WHERE $match (match里面可以用and,or,以及逻辑判断,但是好像不能用where)
GROUP BY $group
HAVING $match
SELECT $project
ORDER BY $sort
LIMIT $limit
SUM() $sum
COUNT() $sum
$pipeline= [
            [
                '$match' => $where
            ], [
                '$group' => [
                    '_id' => [],
                    'groupCount' => [
                        '$sum' => '$groupCount'
                    ]
                ]
            ], [
                '$project' => [
                    'groupCount' => '$groupCount',
                    '_id' => 0
                ]
            ]
];

$count = $this->$mongodb->command('test', $pipeline);

hyperf-mongodb's People

Contributors

adamchen1208 avatar

hyperf-mongodb's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.