目前项目使用的是yii框架,使用mongo拓展效率会更加高些,在网上搜了下,主流的是YiiMongoDbSuite,但是对应的中文文档不全,在这边写个小的测试程序
mongodb的安装和配置请参考上篇博文
一, 使用客户端工具查看mongodb
为了方便查看mongodb数据,win下可使用MongoVUE远程查看
按照说明安装即可,安装后连接需要查看的mongodb
这样就可以简单愉快的查看mongodb的数据情况
二,下载YiiMongoDbSuite
YiiMongoDbSuite可以在yii官网进行下载:
http://www.yiiframework.com/extension/yiimongodbsuite/
下载后将拓展相关的放到yii项目拓展目录下,并在配置文件中进行加载即可使用
三,YiiMongoDbSuite的简单使用
-
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 ), ),
-
构建简单测试用例
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
<?php 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 = '123@example.com'; $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 = '123@example.com'; //要修改的记录 $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), 删除