目前項目使用的是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 = '[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), 刪除