PHP7 mongodb的数据库操作

查询

   $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);
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值