Maison  >  Article  >  cadre php  >  Analyser les opérations de base de mongo dans le cadre TP et ses points d'attention

Analyser les opérations de base de mongo dans le cadre TP et ses points d'attention

藏色散人
藏色散人avant
2021-09-22 17:20:302450parcourir

La colonne suivante du didacticiel thinkphpframework vous présentera le fonctionnement de mongo sous thinkphp. J'espère qu'elle sera utile aux amis dans le besoin !

Analyser les opérations de base de mongo dans le cadre TP et ses points d'attention

1. Plusieurs instructions conditionnelles, beaucoup sur Internet sont juste un supérieur ou un inférieur, il n'y a pas de combinaison de deux, comme supérieur à 2 et inférieur à 4.

$where['_string'] = 'this.b > 2 & this.b<4&#39;;

2. group

mysql:
$res = $model->where(['sTaskId'=>['$in'=>$task_array]])->group('a')->field('a,sum(a)')->select();

mongodb:
$key = ['a'=>1]; //groupby的字段
$init = ['num'=>0];//统计的初始值
$option = array(
'table' => 'course’, // 表名
'condition’=>['sTaskId'=>['$in'=>$task_array]], //group中过滤条件
);
//必须要带option
$reduce = "function(obj, prev){prev.num = prev.num+obj.a}";
$model = new TestModel();
$res = $model->group($key, $init, $reduce, $option);
这里讲一下tp的mongo扩展是有问题的,在group里调用where会无效,具体解决方案是要在mongo.class.php文件
a.把$query改为如下:
$query  =  $this->parseWhere(isset($options['condition'])?$options['condition']:array());
当然$this->queryStr  也要改的
b.把$group改为:
$group = $this->_collection->group($keys,$initial,$reduce,$query);

3. Si vous souhaitez utiliser le modèle modèle pour interroger et que votre configuration principale est MySQL, vous devez d'abord configurer

'mongo' => [
DB_TYPE =>  mongo            
DB_HOST => localhost   
DB_NAME => test
DB_PORT =>  40000
DB_PREFIX =>'' 
DB_USER => ''
DB_PWD => ''
],

dans le fichier de configuration, puis le configurer dans le fichier modèle,
a.protected $trueTableName = 'Table name';
b.protected $connection = 'Driver name, voici mongo';
c. Ce modèle hérite de MongoModel

4.

mysql里只要$res = $model->save(['a'=>1']);
mongo的话需要写成$res = $model->where([])->save(['a'=>1]);

Recommandé : "
Les 10 derniers didacticiels vidéo thinkphp

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer