配置
return array (
'lbs' => array (
'host' => '88888888888888',
'username' => '',
'password' => '',
)
);
连接
$constr=bizma_cjfaster::ld_config("lbs","lbs");
$connection = new MongoClient("mongodb://$constr[host]");
选择表
$db=IM_PREFIX.near;
$m = $connection->selectDB("lbs")->selectCollection("$db");
操作
$gpshash = md5($data_arr[code].$data_arr[lon].$data_arr[lat]);
$lbs_arr = array(
"code" => $data_arr[code],
"type" => $data_arr[type],
"gpshash" => $gpshash,
"sex" => $data_arr[sex],
"loc" => array( "type"=> "Point", "coordinates"=> array(floatval($data_arr[lon]), floatval($data_arr[lat]))),
);
$obj = $m->findOne(array('code' => "$data_arr[code]"));
if (!empty($obj)) {
//$m->insert($user_arr);
$m->update(array("code" => "$data_arr[code]"), array('$set' => array("loc" => array( "type"=> "Point", "coordinates"=> array(floatval($data_arr[lon]), floatval($data_arr[lat]))), "workstate" => '1')));
} else {
$m->insert($lbs_arr);
try{
//添加索引,注意经度和纬度的顺序,否则会报错
//$m->ensureIndex(array('loc' => '2dsphere'));
}catch(Exception $e){
//print $e->getMessage();
};
}
获取附近的数据
连接选择
$constr=bizma_cjfaster::ld_config("lbs","lbs");
$connection = new MongoClient("mongodb://$constr[host]");
$db=IM_PREFIX.near;
$m = $connection->selectDB("lbs")->selectCollection("$db");
搜索条件
$query = array(
"loc"=>array(
'$near'=>array(
'$geometry'=>array(
'type'=> "Point",
'coordinates'=>array($lon,$lat),
),
'$maxDistance'=>5000
)
)
)
搜索
$cursor = $m->find($query)->limit(10);
转换数组
$r_arr=iterator_to_array($cursor);