由于做的是后台的功能,所以大部分都是数据统计的功能
现在由于我的一条数据里嵌套了另一个子数组,所以统计的时候的初始化的值有一点问题,用的是mongodb数据库,其他的数据库就不知道怎么统计啦,例如现在我要的统计的一条数据的形式为{ "_id" : 584b35ab8d02287d6f7cd096, "fightType" :2, "cardList" :[210321, 220061, 250061, 270061, 210041, 220381, 210861, 270421 ], "level"
: 31}有_id,fightType,cardList,level这几个字段,而我现在的需求是要根据fightType这个字段,来统计cardList字段中每个id出现的次数,所以我的$keys=array('fightType'=>true);这个值代表的是以什么来分类统计,可以添加多个,如果是空数组代表的是没有用什么来区分他们,查找全部的字段,$initial=array(‘cardList’=>array('test'=>0)),这个代表的是初始化得值,就是自己统计需要的数据,由于一定要有初始化 的值,所以我只好自己弄了一个test给他,在处理数据的时候再把其去掉,那个cardList是自己命名的,你可以根据自己的需求命名,$reduce="function(obj,prev){
for(var i=0;i<obj.cardList.length;i++){ if(prev.cardList.hasOwnProperty(obj.cardList[i])){ prev.cardList[obj.cardList[i]] ++; }else{ prev.cardList[obj.cardList[i]] = 1; } }}"obj是你当前对象,prev是你累加的文档内容。$condition = array('where'=>$where);这个根据什么条件来选择,可选可不选,
$result = $db->group($keys,$initial,$reduce,$condition);这样就得出结果啦,得出的结果就为这样
Array{
[0] => Array
[retval] => Array
(
[0] => Array
(
[fightType] => 2
[cardList] => Array
(
[210041] => 1
[210321] => 1
[210861] => 1
[220061] => 1
[220381] => 1
[250061] => 1
[270061] => 1
[270421] => 1
[test] => 0
)
)
[1] => Array//假设有两个不同的fightType值
(
[fightType] => 1
[cardList] => Array
(
[210041] => 1
[210081] => 1
[210321] => 1
[210861] => 1
[220061] => 1
[220381] => 1
[250061] => 1
[270061] => 1
[test] => 0
)
)
}
大概就是这样