yii的mongodb拓展YiiMongoDbSuite的配置与使用

目前项目使用的是yii框架,使用mongo拓展效率会更加高些,在网上搜了下,主流的是YiiMongoDbSuite,但是对应的中文文档不全,在这边写个小的测试程序
mongodb的安装和配置请参考上篇博文

一, 使用客户端工具查看mongodb

为了方便查看mongodb数据,win下可使用MongoVUE远程查看

按照说明安装即可,安装后连接需要查看的mongodb

这样就可以简单愉快的查看mongodb的数据情况

二,下载YiiMongoDbSuite

YiiMongoDbSuite可以在yii官网进行下载:

http://www.yiiframework.com/extension/yiimongodbsuite/

下载后将拓展相关的放到yii项目拓展目录下,并在配置文件中进行加载即可使用

三,YiiMongoDbSuite的简单使用

  1. YiiMongoDbSuite的配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    'import' => array(
          'ext.YiiMongoDbSuite.*',
        ),
     
        'components' => array(
          ...
          'mongodb' => array(
            'class'            => 'EMongoDB',
            'connectionString' => 'mongodb://localhost',
            'dbName'           => 'myDatabaseName',
            'fsyncFlag'        => true,
            'safeFlag'         => true,
            'useCursor'        => false
          ),
        ),
    
  2. 构建简单测试用例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    
    
    
    class User extends EMongoDocument
    {
        public $username;
        public $email;
        public $personal_number;
        public $first_name;
        public $last_name;
        public $client;
        public $company;
        public function getCollectionName()
        {
            return 'users';
        }
        public function primaryKey()
        {
            return 'personal_number';
        }
        public function rules() {
            return array(
                array('personal_number, first_name, last_name', 'required'),
            );
        }
        public function attributeLabels()
        {
            return array(
                'username'            => 'UserName',
                'email'                => 'EMail',
                'personal_number'    => 'PN',
                'first_name'        => 'First Name',
                'last_name'            => 'Last Name',
                'client'            => 'Client',
                'company'            => 'Company',
            );
        }
        public static function model($className = __CLASS__)
        {
            return parent::model($className);
        }
    
    }
    

三,使用YiiMongoDbSuite进行简单的curd

1), 新增

1
2
3
4
$user = new User();
$user->username = 'dandand';
$user->email = '[email protected]';
$user->save(); // This will store document with user data into MongoDB collection

2), 查询

a),查询单条数据(第一条)

1
$user = User::model()->find();

a), 单条数据条件查询

1
$model = User::model()->findByAttributes(array('username'=>'dandand'));

c), 单条数据按主键查询

1
$model = User::model()->findByPk('_id');

b), 多条数据条件查询

1
2
3
4
5
$criteria = new EMongoCriteria;
$criteria->username('==', 'dandand') // modulo => personal_number % 10 == 0
       ->sort('firstName',EMongoCriteria::SORT_ASC)
       ->limit(10);
$users = User::model()->findAll($criteria);

3), 修改

1
2
3
4
5
$model = User::model()->find();             //找到要修改的记录
$model->email = '[email protected]';          //要修改的记录
$model->last_name = 'value';
$model->validate(array('email', 'last_name'));             //数据过滤
$users = $model->update(array('email', 'last_name'), true /* <- second parameter indicates to use partial update mechanism */);        //数据修改

4), 删除

你可能感兴趣的:(PHP)