<?php
/*
* http://www.yiiframework.com/
* */
namespace app\modules\index\models;
use yii\mongodb\Query;
use yii\mongodb\ActiveRecord;
use yii\data\ActiveDataProvider;
class Customer extends ActiveRecord
{
//指定集合名称
public static function collectionName()
{
return 'runoob';
}
//定义字段属性
public function attributes()
{
return [
'_id',
'title',
'description'
];
}
//添加文档方法1
public static function insertInfo(){
$collection = \Yii::$app->mongodb->getCollection (Customer::collectionName());
//返回添加后的objectId,不限制于attributes
$res = $collection->insert([
'name' => 'John Smith22',
'status' => 2
]);
return $res;
}
//添加文档方法2,限制于attributes
public static function saveInfo(){
$customer = new Customer();
$customer->title = '111';
$customer->description = '222';
$customer->insert();
//toArray() 将对象转为数组,返回本次添加的数据JSON
return $customer->toArray();
}
//删除文档
public static function deleteInfo(){
//返回删除的记录数
$res = Customer::deleteAll([
'_id' => '58ddf84f36420258358b4567'
]);
return $res;
}
//编辑文档 - [set],[where] @修改符合条件的所有记录,没有title字段则创建
public static function updateInfo(){
//返回更新的条数
$res = Customer::updateAll(
['title' => 'gg','description' => 'nn',],
['_id' => '58ddf8653642026c148b4567']
);
return $res;
}
//编辑文档 - 在所有文档中增加 age & ccy 如存在则会+1
public static function countersInfo(){
//返回更新的条数
$res = Customer::updateAllCounters(['age' => 1,'ccy' => 3]);
return $res;
}
//查询文档 - 聚合查询
public static function cmsInfo(){
$query = new Query ();
$row = $query->select(['title','url'])
->from ( Customer::collectionName() )
->where(['title' => 'test'])
->average('age');//age的平均值
//->max('age');//age最大的值
//->min('age');//age最小的值
//->sum('ccy');//ccy所有列相加的和
//->count('_id');//当前数据总数
return $row;
}
//查询文档 - 可用于分页列表
public static function selectInfo(){
$query = new Query ();
$query->select(['title','description'])
->from (Customer::collectionName())
->offset ( 4 )
->limit ( 2 );
$rows = $query->all();
return $rows;
}
//查询文档 - 根据条件只查询一条数据
public static function oneInfo(){
$query = new Query ();
$row = $query->select(['title','url'])
->from ( Customer::collectionName() )
->where(['_id' => '58ddf8653642026c148b4567'])
->one ();
return $row;
}
//ActiveDataProvider 方式查询1
public static function adp1Info(){
$provider = new ActiveDataProvider ( [
'query' => Customer::find (),
'pagination' => [
'totalCount' => 10,
'pageSize' => 2,
'page' => 4
]//可用于分页
] );
$models = $provider->getModels ();
return $models;
}
//ActiveDataProvider 方式查询2
public static function adp2Info(){
$query = new Query ();
$query->select(['title'])->from ( Customer::collectionName() )->where ( [
'title' => 'test'
] );
$provider = new ActiveDataProvider ( [
'query' => $query,
'pagination' => [
'totalCount' => 10,
'pageSize' => 2,
'page' => 2
]//可用于分页
] );
$models = $provider->getModels ();
return $models;
}
}
|