一、mongodb 的group 里面可以实现很多的操作
1.如下代码
$maxLogID=sysconf('maxLogID');
$where['LogID'] = array('$gt' => (int)$maxLogID);
$where['WinGold'] = array('$gt' => 0);
$pipe = array(
array(
'$match' => $where
),
array(
'$group' => array(
'_id' => '$UserID',
'maxWinGold'=>array(
'$max'=>'$WinGold'
),
'maxLogID'=>array(
'$max'=>'$LogID'
),
'todayWin'=>array(
'$sum'=>'$WinGold'
)
),
)
);
$result = GameMongoDB::table('GameLog0')->aggregate($pipe);
2.解释
以上代码是php使用pipe的操作,
m
a
x
L
o
g
I
D
是
为
了
记
录
查
询
到
哪
里
了
,
maxLogID是为了记录查询到哪里了,
maxLogID是为了记录查询到哪里了,pipe里面
m
a
t
c
h
是
条
件
,
然
后
match是条件,然后
match是条件,然后group里面_id后面对应的是要分组的字段,maxwinGold是自定义的字段,后面跟一个数组,键是操作的指令,value是对应的字段
m
a
x
是
指
根
据
这
个
U
s
e
r
I
D
进
行
分
组
然
后
返
回
这
个
字
段
的
最
大
值
,
max是指根据这个UserID进行分组然后返回这个字段的最大值,
max是指根据这个UserID进行分组然后返回这个字段的最大值,sum是求和
3.注意 mongodb是严格区分数据类型的,比如值是123 你用‘123’是查不出来的