查询
$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$where = [];//条件
$options = [
'projection' => [],
//'sort' => ['create_time' => -1],//排序:1升序,-1降序
// 'skip'=> 0, //从第几条开始
// 'limit'=>$offset, //查询几条
];
$query = new MongoDB\Driver\Query($where, $options);
$cursor = $manager->executeQuery('player_level.newplayer_level', $query);
$data = [];
foreach($cursor as $doc) {
$data[] = $doc;
}
dump($data);
新增
$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$bulk = new MongoDB\Driver\BulkWrite;
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);//可选,修改确认
$bulk->insert(["level"=>$level,"ppk"=>$ppk,"id"=>$id]);
$res = $manager->executeBulkWrite('player_level.player_level', $bulk, $writeConcern);//库名称.集合名称
删除
$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$bulk = new MongoDB\Driver\BulkWrite;
//$bulk->delete([]);//删除集合所有数据
//$bulk->delete(['level' => '10']);//按条件删除
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);//可选,修改确认
$res = $manager->executeBulkWrite('player_level.player_level', $bulk, $writeConcern);//库名称.集合名称
修改
$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->update(
['number' => 'JetWu5'],//条件
['$set' => ['age' => 30, 'name' => '666666']],//修改的内容
);
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);//可选,修改确认
$res = $manager->executeBulkWrite('day_stat.day_work', $bulk, $writeConcern);//库名称.集合名称
下面是PHP7 mongodb的聚合查询实例
在mysql的聚合查询中,count 和sum是求数量和求和
在对应的mongodb的聚合查询中,count和sum 都是$sum
, 字段如果是string类型,$sum
出来的值就是mysql中的count,如果字段是int类型的,$sum出来的就是mysql中的sum。
//mongodb分别使用
//$lt、<
//$lte、<=
//$eq、=
//$gte、>=
//$gt、>
//$ne<>
//表示<、<=、=、>=、>、<>,用于整数字段查询
/************分组查询***************/
$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
//当日赢榜
$paramwin = [
'aggregate' => 'day_profit_rank',
'pipeline' => [
['$match' =>
[ 'coins' => ['$gt'=>0],
'day' =>['$eq'=>$day],
'gamesmalltype'=>['$eq'=>$gamesmalltype]]
],//条件
['$group' => [
'_id' => ['ppk'=>'$ppk',
'coins'=>'$coins',
'gamesmalltype'=>'$gamesmalltype'
],//分组字段
]],
['$sort' => ['coins' => -1 ]] //排序,-1是倒叙,1是正序
],
'cursor' => new \stdClass, //高版本mongodb必须带的参数
];
$cmdwin = new MongoDB\Driver\Command($paramwin);
$cursorwin = $manager->executeCommand('player_rankk', $cmdwin)->toArray();
$win = [];
foreach($cursorwin as $docwin) {
$docwin->ppk = $docwin->_id;
$win[] = $docwin;
}
/**********分组聚合*************/
$paramwin = [
'aggregate' => 'player_rankk',
'pipeline' => [
['$match' => ['day' =>['$eq'=>$day],'gamesmalltype'=>['$eq'=>0],'coins' => ['$gt'=>0]]],//条件
['$group' => [
'_id' => '$ppk',//分组字段
'coins' => [
'$sum' => '$coins' // 聚合查询字段 要加上$
]
]],
['$sort' => ['coins' => -1 ]]
],
'cursor' => new \stdClass,
];
$cmdwin = new MongoDB\Driver\Command($paramwin);
$cursorwin = $manager->executeCommand('player_rankk', $cmdwin)->toArray();
$win = [];
foreach($cursorwin as $docwin) {
$docwin->ppk = $docwin->_id;
$win[] = $docwin;
}
dump($win);