- 产品用户访问日志,点击埋点统计信息
- 业务系统环境参数配置信息
- 业务系统运行时日志,如laravel.log,nginx.log
使用Homebrew在macoOS安装MongoDB PHP Driver
在macOS中,MongoDB 扩展已经从Homebrew仓库中移除,需要通过pecl安装此扩展。
1 2 3 4 5 6 7 | $ sudo pecl install mongodb -v ... Build process completed successfully Installing '/usr/local/Cellar/php@7.2/7.2.19/pecl/20170718/mongodb.so' install ok: channel: //pecl.php.net/mongodb-1.5.4 Extension mongodb enabled in php.ini |
1 2 3 4 5 6 | ... Configuration File (php.ini) Path /usr/local/etc/php/7.2 Loaded Configuration File /usr/local/etc/php/7.2/php.ini Scan this dir for additional .ini files /usr/local/etc/php/7.2/conf.d Additional .ini files parsed /usr/local/etc/php/7.2/conf.d/ext-opcache.ini, /usr/local/etc/php/7.2/conf.d/php-memory-limits.ini .... |
1 | touch /usr/local/etc/php/7.2/conf.d/ext-mongodb.ini |
1 2 | [mongodb] extension=/usr/local/Cellar/php@7.2/7.2.19/pecl/20170718/mongodb.so |
1 2 | extension= "mongodb.so" // remove extension= "php_mongodb.so" // remove |
1 | sudo brew service restart --all |
1 | php -m|grep mongodb |
在Laravel中使用MongoDB
使用Composer创建一个Laravel项目
1 | composer create-project --prefer-dist laravel/laravel laravel-mongodb-exploer -vvv |
1 | composer require jenssegers/mongodb -vvv |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | //database.php ... 'mongodb' => [ 'driver' => 'mongodb' , 'host' => env( 'MONGODB_HOST' , 'localhost' ), 'port' => env( 'MONGODB_PORT' , 27017), 'database' => env( 'MONGODB_DATABASE' ), 'username' => env( 'MONGODB_USERNAME' ), 'password' => env( 'MONGODB_PASSWORD' ), 'options' => [ 'database' => 'admin' // sets the authentication database required by mongo 3 ] ], ... //.env ... MONGODB_HOST=127.0.0.1 MONGODB_PORT=27017 MONGODB_DATABASE=viewers ... |
命令行创建MongoDB数据库
macOS中,在命令行执行mongo开启MongoDB Shell
1 | ./mongo |
1 2 3 4 5 6 | show dbs; admin 0.000GB config 0.000GB local 0.000GB viewers 0.000GB |
1 | use viewers; |
1 | db.ad_clicks.insert({ "ip" : "201.35.63.14" , "ad_index" : 3, "created_at" : "2019-06-10 11:34:12" }) |
1 2 3 4 5 6 7 | > db.ad_clicks.find() { "_id" : ObjectId( "5cf71b34e14620598643d23b" ), "ip" : "201.34.46.3" , "ad_index" : "2" , "created_at" : "2019-06-05 11:34:53" } { "_id" : ObjectId( "5cf71d3de14620598643d23d" ), "ip" : "200.14.145.64" , "ad_index" : 1, "created_at" : "2019-06-04 11:11:45" } { "_id" : ObjectId( "5cf71d3ee14620598643d23e" ), "ip" : "200.14.145.64" , "ad_index" : 1, "created_at" : "2019-06-04 11:11:45" } { "_id" : ObjectId( "5cf71d44e14620598643d23f" ), "ip" : "200.14.145.64" , "ad_index" : 1, "created_at" : "2019-06-04 11:11:45" } { "_id" : ObjectId( "5cf71d45e14620598643d240" ), "ip" : "200.14.145.64" , "ad_index" : 1, "created_at" : "2019-06-04 12:34:12" } { "_id" : ObjectId( "5cfe28823316506991c41786" ), "ip" : "201.35.63.14" , "ad_index" : 3, "created_at" : "2019-06-10 11:34:12" } |
在Laravel DB中查询MongoDB
使用了Laravel-MongoDB扩展,可以基于Eloquent与Query Builder操作MySQL一样的数据php artisan thinker
查询ad_clicks集合所有记录
1 | DB::connection( 'mongodb' )->table( 'ad_clicks' )->get() |
1 | DB::connection( 'mongodb' )->collection( 'ad_clicks' )->find( '5cf71b34e14620598643d23b' ) |
1 | DB::connection( 'mongodb' )->collection( 'ad_clicks' )->where( '_id' , '5cf71b34e14620598643d23b' )->update([ 'ad_index' =>2]); |
在Laravel ORM中查询MongoDB
在项目中,创建一个Model
1 | php artisan make:model Models/AdClick |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | ... use Jenssegers\Mongodb\Eloquent\Model; class AdClick extends Model { protected $connection = 'mongodb' ; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = []; /** * The attributes that aren't mass assignable. * * @var array */ protected $guarded = []; } |
继续在Thinker中,插入数据
1 | App\Models\AdClick::create([ 'ip' => '31.42.4.14' , 'ad_index' => 4, 'created_at' => '2019-06-10 18:10:01' , 'ip2long' => ip2long ( '31.42.4.14' )]); |
1 | App\Models\AdClick::where( 'ip' , '31.42.4.14' )-> count () |
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://www.phpxs.com/post/6705/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料
查 看2022高级编程视频教程免费获取