如何将 Mongodb 查询转换为 Cakephp 兼容

How to convert Mongodb query to Cakephp compatible

如何将mongodb命令转换成cakephp脚本?

我写了这个命令:

db.citytable.find({
"city": "del%"
 }, {
"cityname": 1
});

我想在 Cakephp 中转换它。 like 不适用于 Mongodb。 我在 MongoDB.

中使用 Cakephp

编辑

public function load_city() {
    $this - > layout = false;
    $city_list = array();
    $this - > autoRender = false;
    if ($this - > request - > is('ajax')) {
        $city_term = strtoupper($this - > request - > query('term'));
        $mydb = new MongoClient();


        $params = array(
            'conditions' = > array(
            'OR' = > array(
            'local_area' = > new MongoRegex("/$city_term/i"),
            'city_name' = > new MongoRegex("/$city_term/i"), ), ), );
        $results = $this - > Managelist - > find('all', $params);
        $this - > set(compact('results'));
        foreach($results as $result) {
            $city_list[] = $result['Managelist']['local_area'].",".$result['Managelist']['city_name'];

            array_unshift($city_list, $result['Managelist']['city_name']);

        }

        echo json_encode(array_unique($city_list));

        exit;

    }
}

我正在通过 jquery 自动完成功能调用 load_city()

你可以这样做,

    $m = new MongoClient();
    $collection = $m->selectCollection($this->dbName, 'citytable');
    $string="del";
    $regexObj = new MongoRegex("/$string/i");
    $where = array("city" => $regexObj);
    $resultset = $collection->find($where);

    $resultData = array();
    while ($resultset->hasNext()) {
        $clientObj = $resultset->getNext();
        $resultData[] = $clientObj;
    }
    var_dump($resultData);

对于 Or 子句,请使用以下代码,

$m = new MongoClient();
$collection = $m->selectCollection($this->dbName, 'citytable');
$resultset = $collection->find(array('$or' => array(
  array("field1" => "test"),
  array("field2" => "data")
)));