Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/reasno/fastmongo
🔌 Plug & Play Mongodb driver for Hyperf (With Coroutine!)
https://github.com/reasno/fastmongo
coroutine hyperf hyperf-mongodb mongodb swoole
Last synced: 2 days ago
JSON representation
🔌 Plug & Play Mongodb driver for Hyperf (With Coroutine!)
- Host: GitHub
- URL: https://github.com/reasno/fastmongo
- Owner: Reasno
- License: mit
- Created: 2020-06-01T07:39:34.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-08-20T17:23:45.000Z (3 months ago)
- Last Synced: 2024-11-05T21:49:28.142Z (9 days ago)
- Topics: coroutine, hyperf, hyperf-mongodb, mongodb, swoole
- Language: PHP
- Homepage:
- Size: 59.7 MB
- Stars: 85
- Watchers: 2
- Forks: 16
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
`reasno/fastmongo` is the a coroutine-based mongodb client for Hyperf, powered by `hyperf/gotask`.
## Installation
```php
composer require reasno/fastmongo
```
- MongoDB extension is required.
- MongoDB > 4.0
- MongoDB PHP library is ***NOT*** required.
- Go is ***NOT*** required.## Configuration
Just set the environmental variable MONGODB_URI. (Defaults to `mongodb://127.0.0.1:27017`)
You may also use `php bin/hyperf.php vendor:publish reasno/fastmongo` to export a configuration.
## API List
```php
my_database->my_col;
$col->insertOne(['gender' => 'male', 'age' => 18]);
$col->insertMany([['gender' => 'male', 'age' => 20], ['gender' => 'female', 'age' => 18]]);
$col->countDocuments();
$col->findOne(['gender' => 'male']);
$col->find(['gender' => 'male'], ['skip' => 1, 'limit' => 1]);
$col->updateOne(['gender' => 'male'], ['$inc' => ['age' => 1]]);
$col->updateMany(['gender' => 'male'], ['$inc' => ['age' => 1]]);
$col->replaceOne(['gender' => 'female'], ['gender' => 'female', 'age' => 15]);
$col->aggregate([
['$match' => ['gender' => 'male']],
['$group' => ['_id' => '$gender', 'total' => ['$sum' => '$age']]],
]);
$col->deleteOne(['gender' => 'male']);
$col->deleteMany(['age' => 15]);
$col->drop();
// if there is a command not yet supported, use runCommand or runCommandCursor.
$client->my_database->runCommand(['ping' => 1]);
return $client->my_database->runCommandCursor(['listCollections' => 1]);
}
}
```## Background
This package makes use of `hyperf/gotask` to achieve coroutine.
In `hyperf/gotask` v2.1.0 a new mongodb package is added. Normally GoTask requires you to do some coding in Go. However this approach demands some proficiency in Go, which can be prohibitive. `reasno/fastmongo` is a prebuilt version of the newly added mongodb package. It vendors the Go binary for you so you don't have to compile your own.
This package only exposes a very simple yet optimized configuration interface. Should more customization be needed, checkout out the original `hyperf/gotask`.
> Please do not turn on `hyperf/gotask` and this package at the same time.
## Future Scope
* More mongodb commands can be added. Please feel free to create issues or submit your PRs to `hyperf/gotask`.