选择语言 :

 Driver_Database_Driver_Mongo::_compile_set_data

null Driver_Database_Driver_Mongo::_compile_set_data( )
File: ./drivers/database/mongo/mongo.class.php
protected static function _compile_set_data($op, $value , $parameters)
{
    $op = strtolower($op);
    $op_arr = array
    (
        '>'  => 'gt',
        '>=' => 'gte',
        '<'  => 'lt',
        '<=' => 'lte',
        '!=' => 'ne',
        '<>' => 'ne',
    );

    if ($op === 'between' && is_array($value))
    {
        list ($min, $max) = $value;

        if (is_string($min) && array_key_exists($min, $parameters))
        {
            $min = $parameters[$min];
        }
        $option['$gte'] = $min;

        if (is_string($max) && array_key_exists($max, $parameters))
        {
            $max = $parameters[$max];
        }
        $option['$lte'] = $max;
    }
    elseif ($op==='=')
    {
        if (is_object($value))
        {
            if ($value instanceof MongoCode)
            {
                $option['$where'] = $value;
            }
            elseif ($value instanceof Database_Expression)
            {
                $option = $value->value();
            }
            else
            {
                $option = $value;
            }
        }
        else
        {
            $option = $value;
        }
    }
    elseif ($op==='in')
    {
        $option = array('$in'=>$value);
    }
    elseif ($op==='not in')
    {
        $option = array('$nin'=>$value);
    }
    elseif ($op==='mod')
    {
        if ($value[2]=='=')
        {
            $option = array('$mod'=>array($value[0],$value[1]));
        }
        elseif ($value[2]=='!='||$value[2]=='not')
        {
            $option = array
            (
                '$ne' => array('$mod'=>array($value[0],$value[1]))
            );
        }
        elseif (substr($value[2],0,1)=='$')
        {
            $option = array
            (
                $value[2] => array('$mod'=>array($value[0],$value[1]))
            );
        }
        elseif (isset($value[2]))
        {
            $option = array
            (
                '$'.$value[2] => array('$mod'=>array($value[0],$value[1]))
            );
        }
    }
    elseif ($op==='like')
    {
        // 将like转换成正则处理
        $value = preg_quote($value,'/');

        if (substr($value,0,1)=='%')
        {
            $value = '/' . substr($value,1);
        }
        else
        {
            $value = '/^'.$value;
        }

        if (substr($value,-1)=='%')
        {
            $value = substr($value,0,-1) . '/i';
        }
        else
        {
            $value = $value.'$/i';
        }

        $value = str_replace('%','*',$value);

        $option = new MongoRegex($value);
    }
    else
    {
        if (isset($op_arr[$op]))
        {
            $option['$'.$op_arr[$op]] = $value;
        }
    }

    return $option;
}