繁体   English   中英

使用PHP查找MongoDB数据

[英]Find MongoDB data with PHP

使用PHP代码进行Mongodb搜索:

$cond=array();
$cond=array_merge($cond,array("clicks" => array('$gt' =>6)));     

if (isset($lang)){
   $cond=array_merge($cond,array("$or" => array(array("lang" =>'de'),array("lang" =>'fr'))));
}

if (isset($country)){    
   $cond=array_merge($cond,array("$or" => array(array("country" =>'us'),array("country" =>'uk'))));
}

问题:在最后一行,国家的第二个$or替换了lang的第一个$or 如果有人可以建议我们如何避免这个压倒性的问题,那就太好了吗?

实际上,我是MongoDB的新手,我想在MongoDB中创建一个查找查询。 我必须根据每列的某些条件标志(例如,如果仅'$ country = true'然后嵌入国家/地区过滤器)来构建查询。 与SQL类似,我需要的输出是:

“点击次数> 6,并且(lang ='de'或lang ='fr')和(country ='us'或country ='uk')”

这就是结果数组的样子:

$cond = [
    '$and' => [
        ['clicks' => [ '$gt' => 6 ]],
        ['$or' => [
            [ 'lang' => 'de' ],
            [ 'lang' => 'fr' ]
        ]],
        ['$or' => [
            [ 'country' => 'us' ],
            [ 'lang' => 'uk' ]
        ]]
    ]
];

现在,要使用指定的模块化方法来实现此目的,可以执行以下操作:

$cond = [
    '$and' => [
        ['clicks' => [ '$gt' => 6 ]]
    ]
];

if (isset($lang)) {
    $cond['$and'][] = ['$or' => [['lang' =>'de'], ['lang' =>'fr']]];
}
if (isset($country)) {
    $cond['$and'][] = ['$or' => [['country' =>'us'], ['country' =>'uk']]];
}

希望这将演示在PHP中组装嵌套或/和查询的方法,因此您可以根据设计需要进一步调整它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM