r0mdau / jisly
最小的NoSQL数据库库,扁平文件JSON。
Requires
- php: >=8.2
Requires (Dev)
- malukenho/docheader: ^0.1.7
- php-coveralls/php-coveralls: ^2.5
- phpstan/phpstan: ^1.8
- phpstan/phpstan-strict-rules: ^1.4
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^3.5
README
最小的PHP轻量级NoSQL数据库库,扁平文件JSON。
Jisly的主要目标是允许您使用NoSQL(面向文档)查询语法,通过内存和扁平文件存储快速开始项目。
并发访问得到管理!
如何安装和加载
此库可在Packagist上找到
composer require r0mdau/jisly:^2.0
加载库
Jisly依赖于PSR-4规范来自动从文件路径加载类。
use Jisly\JislyCollection;
public function saveCart(): void {
$jisly = new JislyCollection("/tmp/data", "cart");
...
}
定义
- 每个文档都有一个唯一的标识符,称为
_rid
。 - 每个集合在物理上由一个文件表示。
- 文件存储在单个工作目录中。Jisly类通过将此目录的路径作为参数实例化。
- 每次您进行CRUD操作时,所有数据都存储在内存中。
- 并且数据保存到文件系统中。
使用示例
类初始化
$directory
包含数据模型文件(=集合)将存储的目录的路径。
$database = new Jisly($directory);
要访问集合
$name
包含我们想要请求的集合的名称。例如:user
。
返回一个JislyCollection
对象
$database->collection($name);
警告:每次您第一次访问集合时,所有数据都会存储在内存中。
要调用集合
前言:Insert、Update、Delete方法返回布尔值,如果操作成功则返回true
,否则返回false
。
插入方法
以JSON格式将数组插入到指定的集合中,并为文档分配一个唯一标识符_rid
(如果没有指定)
$successBool = $database->collection($file)->insert( [ "name" => "Lucas", "firstname" => "Georges" ] );
删除方法
您必须先找到所有要删除的文档,然后将_rid
属性提供给删除方法。
移除集合中具有$rid
属性值的唯一文档
$successBool = $database->collection($file)->delete($rid);
选择方法
返回集合中的所有文档的array()
对象
$results = $database->collection($file)->find();
返回具有name
属性值为Lucas
的集合中的所有文档的array()
对象
$results = $database->collection($file)->find( [ "name" => "Lucas" ] );
返回具有name
属性值为19
的对象
$result = $database->collection($file)->findOne( [ "name" => 19 ] );
逻辑运算符OR和AND
这两个逻辑运算符可用于find
和findOne
方法。
如果没有提供逻辑运算符,则使用OR
。
返回具有name
属性值为Lucas
或具有firstname
属性值为Georges
的集合中的所有文档的array()
对象
$result = $database->collection($file)->find( [ "firstname" => "Georges", "name" => "Lucas" ], JislyCollection::LOGICAL_OR );
返回具有name
属性值为Lucas
并且具有firstname
属性值为Georges
的集合中的第一个文档的array()
对象
$result = $database->collection($file)->findOne( [ "firstname" => "Georges", "name" => "Lucas" ], JislyCollection::LOGICAL_AND );
更新方法
对于修改,有关文档将完全替换为参数中提供的第二个array()
。
您必须先找到所有要替换的文档,然后将_rid
属性提供给更新方法。
修改集合中具有$rid
属性值的唯一文档
$successBool = $database->collection($file)->update( $rid, [ "firstname" => "Georges", "name" => "Lucas" ] );