php给mongodb添加索引

Posted ljkltt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php给mongodb添加索引相关的知识,希望对你有一定的参考价值。

<?php
/**
 * mongo字段加索引
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2021/6/11
 * Time: 15:02
 */

$mongoDB = \'deyibao\';//mongo数据库名
$mongoClient = new MongoClient();//mongo连接
$db = $mongoClient->selectDB($mongoDB);//选择数据库
$collectionNames = $db->getCollectionNames();//获取所有的集合名
$rule1 = \'/task_record_.*/\';//正则表达式
$rule2 = \'/turn_.+_record_.*/\';
foreach ($collectionNames as $k=>$v){
    $index = $db->$v->getIndexInfo();//获取索引
    if (preg_match_all($rule1,$v)){
        foreach ($index as $key=>$val){
            if (!strstr(\'date\',$val[\'name\'])) $collection = $db->$v->ensureIndex([\'date\' => 1],[\'background\'=>true]);
            if (!strstr(\'userId\',$val[\'name\'])) $collection = $db->$v->ensureIndex([\'userId\' => 1],[\'background\'=>true]);
        }
    }
    if (preg_match_all($rule2,$v) || strstr($v,\'turn_luck_money\')){
        foreach ($index as $key=>$val){
            if (!strstr(\'date\',$val[\'name\'])) $collection = $db->$v->ensureIndex([\'date\' => 1],[\'background\'=>true]);
            if (!strstr(\'userId\',$val[\'name\'])) $collection = $db->$v->ensureIndex([\'userId\' => 1],[\'background\'=>true]);
            if (!strstr(\'type\',$val[\'name\'])) $collection = $db->$v->ensureIndex([\'type\' => 1],[\'background\'=>true]);
            if (!strstr(\'createTime\',$val[\'name\'])) $collection = $db->$v->ensureIndex([\'createTime\' => 1],[\'background\'=>true]);
        }
    }
    if (strstr($v,\'turn_user_sign\') || strstr($v,\'turn_message\') || strstr($v,\'turn_group_ranklist_log\')) {
        foreach ($index as $key=>$val){
            if (!strstr(\'userId\',$val[\'name\'])) $collection = $db->$v->ensureIndex([\'userId\' => 1],[\'background\'=>true]);
        }
    }
    if (strstr($v,\'turn_group_ranklist\')) {
        foreach ($index as $key=>$val){
            if (!strstr(\'date\',$val[\'name\'])) $collection = $db->$v->ensureIndex([\'date\' => 1],[\'background\'=>true]);
            if (!strstr(\'groupId\',$val[\'name\'])) $collection = $db->$v->ensureIndex([\'groupId\' => 1],[\'background\'=>true]);
        }
    }
    if (strstr($v,\'turn_contribution\')) {
        foreach ($index as $key=>$val){
            if (!strstr(\'userId\',$val[\'name\'])) $collection = $db->$v->ensureIndex([\'userId\' => 1],[\'background\'=>true]);
            if (!strstr(\'ctbUserId\',$val[\'name\'])) $collection = $db->$v->ensureIndex([\'ctbUserId\' => 1],[\'background\'=>true]);
            if (!strstr(\'date\',$val[\'name\'])) $collection = $db->$v->ensureIndex([\'date\' => 1],[\'background\'=>true]);
            if (!strstr(\'tierNum\',$val[\'name\'])) $collection = $db->$v->ensureIndex([\'tierNum\' => 1],[\'background\'=>true]);
        }
    }
    if (strstr($v,\'turn_exchange\')) {
        foreach ($index as $key=>$val){
            if (!strstr(\'date\',$val[\'name\'])) $collection = $db->$v->ensureIndex([\'date\' => 1],[\'background\'=>true]);
            if (!strstr(\'configId\',$val[\'name\'])) $collection = $db->$v->ensureIndex([\'configId\' => 1],[\'background\'=>true]);
            if (!strstr(\'userId\',$val[\'name\'])) $collection = $db->$v->ensureIndex([\'userId\' => 1],[\'background\'=>true]);
            if (!strstr(\'type\',$val[\'name\'])) $collection = $db->$v->ensureIndex([\'type\' => 1],[\'background\'=>true]);
        }
    }
}

根据自己需求更改,此文章只为记录

以上是关于php给mongodb添加索引的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB PHP

php操作mongoDB数据库查询的时候怎样写“或”这样的多个条件查询代码?

详解MongoDB索引优化

唯一索引不适用于 Mongoose / MongoDB

PHP必用代码片段

如何将代码片段存储在 mongodb 中?