Maison > cadre php > PensezPHP > 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

藏色散人
Libérer: 2021-09-23 09:06:33
avant
2482 Les gens l'ont consulté

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;;
Copier après la connexion

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);
Copier après la connexion

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 => ''
],
Copier après la connexion

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]);
Copier après la connexion

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!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal