freekrai/schemaless

此包已被废弃,不再维护。没有推荐替代包。

基于 SqLite 的无模式数据库

dev-master 2015-02-14 03:04 UTC

This package is not auto-updated.

Last update: 2015-07-01 12:47:00 UTC


README

基于 MongoDB,构建在 SqLite 之上的无模式数据库

示例用法

$client     = new Schemaless\Client( PATH_TO_WRITABLE_FOLDER );
$database   = $client->testdb;
$collection = $database->products;

$entry = ["name"=>"Rocky Road", "price"=>20,'qty'=>20];

$collection->insert($entry);

$products = $collection->find(); // Get Cursor

if ( $products->count() ) {
    echo 'Total Records: '.$products->count().'<br />';
    foreach($products->sort( ["price"=>1] )->limit(5) as $product) {
        echo '<pre>'.print_r($product,true).'</pre>';
    }
}

查询集合

通常可以使用回调或简单数组作为条件

$products = $collection->find(function($document) {   // recommended to query data
    return $document["price"] > 10;
});
foreach( $products as $product ){
    echo '<pre>'.print_r($product,true).'</pre>';
}
echo '<hr />';

//or

$products = $collection->find( ["price"=>['$gt'=>10]] ); // only very simple criteria is supported (can be slow)
foreach( $products as $product ){
    echo '<pre>'.print_r($product,true).'</pre>';
}
echo '<hr />';

//or just one
$product = $collection->findOne(function($document) {   // recommended to query data
    return $document["name"] == 'Rocky Road';
});
echo '<pre>'.print_r($product,true).'</pre>';
echo '<hr />';

$product = $collection->findOne( ["name"=>'Rocky Road'] );
echo '<pre>'.print_r($product,true).'</pre>';

写入文档

$collection->insert($document);
$collection->save($document);
$collection->update($criteria, $data);

删除文档

$collection->remove($criteria);

API

客户端

Client::listDBs()
Client::selectDB(databasename)
Client::selectCollection(databasename, collectionname)

数据库

Database::vacuum()
Database::drop()
Database::createCollection(collectionname)
Database::dropCollection(collectionname)
Database::getCollectionNames()
Database::listCollections()
Database::selectCollection(collectionname)

集合

Collection::drop()
Collection::renameCollection(newname)
Collection::insert(document)
Collection::save(document)
Collection::update(criteria, data)
Collection::remove(criteria)
Collection::count()
Collection::find(criteria)
Collection::findOne(criteria)

游标

Cursor::count()
Cursor::limit(number)
Cursor::skip(number)
Cursor::sort(array)
Cursor::each($callable)
Cursor::toArray()

安装

要使用 composer PHP 包管理器安装和使用 Schemaless,请按照以下步骤操作

如果您还没有,请在新项目的根目录中创建 composer.json 文件,该项目将使用 Schemaless。

将以下内容添加到 composer.json 文件中...

{
    "require": {
        "freekrai/schemaless": "dev-master"
    }
}

安装 composer(如果尚未安装)

curl -s https://getcomposer.org/installer | php
php composer.phar install