Mongo表索引

介绍

1.分库分表

按照时间进行分库,一天一个库

按照website_id进行分表,一个website一个表

2.新加计算字段:

service_timestamp: 服务器接收数据的时间戳

service_datetime: 服务器接收数据, 格式:Y-m-d H:i:s

service_date: 服务器接收数据, 格式:Y-m-d

stay_seconds: 通过两个相邻的uuid的service_timestamp,相减获得,查询uuid = 当前uuid && service_date = 当前的service_date

uuid_first_page:由于按照时间分库,站点分表,查询当前表,是否存在uuid,如果不存在,则 uuid_first_page = 1,否则 uuid_first_page = 0

ip_first_page: 这个暂时没有发现用处

uuid_first_category: 如果存在 uuid 和category,则查询是否存在,如果不存在,则为1,不存在则为0

ip_first_category: 暂无用处

url_new: 去掉某些参数后的url,譬如:

$var_names = [
    'utmsource',
    'cid',
    'aid',
    'mid',
    'affiliate',
    'click',
    'utm_source',
    'utm_medium',
    'utm_campaign',
    'utm_content',
    '_ga',
    'gclid',
];	
	$get['url_new'] = trimVar(removeqsvar($url, $var_names));

search_login_email:

            where([
				'uuid'=>$one['uuid'],
				'login_email'=>['$exists' => true]
			])

1. ` function removeqsvar($url, $var_names) {

foreach($var_names as $param){
	$url = preg_replace('/([?&])'.$param.'=[^&]+(&|$)/','$1',$url);
}
return $url;

} `

2.去掉特殊字符,去除大约350的字符

function trimVar($url){
	$url = trim($url,"?");
	$url = trim($url,"#");
	$url = trim($url,"&");
	$url = trim($url,"/");
	$url_length = strlen($url);
	# 如果url大约350,那么只取350内的url字符
	if($url_length > 350){
		$url = substr($url,0,350);
	}
	return $url;
}

first_visit_this_url:如果存在 uuid 和category

索引:

order.invoice: 用于在接收数据部分,更新订单的支付状态

uuid, service_date, _id: 用于计算 stay_seconds 的值,查询uuid = 当前uuid && service_date = 当前的service_date, _id倒序 ,取一个值,然后查看时间间隔

需要加的索引

1.按照website分表

索引: order.invoice: