nddcoder / sql-to-mongodb-query
1.3.0
2024-05-17 15:13 UTC
Requires
- php: ^8.0
- ext-mongodb: *
- mongodb/mongodb: ^1.8
- phpmyadmin/sql-parser: ^5.9
Requires (Dev)
- pestphp/pest: ^1.20
- symfony/var-dumper: ^5.2
- vimeo/psalm: ^4.3
README
安装
您可以通过 composer 安装此包
composer require nddcoder/sql-to-mongodb-query
在线演示
GUI phpMongoAdmin
用法
解析 Find 查询
$parser = new Nddcoder\SqlToMongodbQuery\SqlToMongodbQuery(); $query = $parser->parse(" SELECT id, username, email, created_at FROM users USE INDEX active_1_created_at_1 WHERE active = true and created_at >= date('2021-01-01') ORDER BY created_at desc LIMIT 10, 20 "); /* Nddcoder\SqlToMongodbQuery\Model\FindQuery {#473 +filter: array:2 [ "active" => true "created_at" => array:1 [ "$gte" => MongoDB\BSON\UTCDateTime {#926 +"milliseconds": "1609459200000" } ] ] +projection: array:4 [ "id" => 1 "username" => 1 "email" => 1 "created_at" => 1 ] +sort: array:1 [ "created_at" => -1 ] +limit: 20 +skip: 10 +collection: "users" +hint: "active_1_created_at_1" } */
解析 Aggregate 查询
$parser = new Nddcoder\SqlToMongodbQuery\SqlToMongodbQuery(); $query = $parser->parse(" SELECT date, count(*) FROM clicks USE INDEX status_1_created_at_1 WHERE status = 1 and created_at >= date('2021-07-01') GROUP BY date HAVING count(*) > 100 "); /* Nddcoder\SqlToMongodbQuery\Model\Aggregate {#493 +pipelines: array:4 [ 0 => array:1 [ "$match" => array:2 [ "status" => 1 "created_at" => array:1 [ "$gte" => MongoDB\BSON\UTCDateTime {#926 +"milliseconds": "1625097600000" } ] ] ] 1 => array:1 [ "$group" => array:2 [ "_id" => array:1 [ "date" => "$date" ] "count(*)" => array:1 [ "$sum" => 1 ] ] ] 2 => array:1 [ "$project" => array:3 [ "date" => "$_id.date" "count(*)" => "$count(*)" "_id" => 0 ] ] 3 => array:1 [ "$match" => array:1 [ "count(*)" => array:1 [ "$gt" => 100 ] ] ] ] +collection: "clicks" +hint: "status_1_created_at_1" } */
测试
composer test
变更日志
请参阅 变更日志 了解最近的变化。
贡献
请参阅 贡献指南 了解详情。
安全漏洞
请审查 我们的安全策略 了解如何报告安全漏洞。
致谢
许可证
MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。