【问题标题】:need to query MongoDB using php需要使用php查询MongoDB
【发布时间】:2012-08-29 15:20:58
【问题描述】:

我需要这样查询 mongodb:

("something" < X OR "something" = "nll") AND ("someother">X OR "someother"= "nll") AND z=$z AND s=1

我尝试了一些东西,但无法让它工作,这是我尝试过的:

find( array( '$or'=>array(array("something"=>array("$le",$X)),array("something"=>"nll")), '$or'=>array(array("someother"=>array("$ge",$X)),array("someother"=>"nll")) ))

但这让我的 OR 被覆盖,所以我迷失了......

在深入挖掘之后,我组装了这段似乎是我需要的代码,但也不起作用:

find( array('$and'=>array( array( '$or' => array( array("something"=>array('$gte'=>$X)),array("something"=>"nll"))), array('$or' => array( array("someother"=>array('$lte'=>$X)),array("someother"=>"nll")))),"Z"=>$z, "s"=>"1");

但这不起作用,因为它返回零结果,而且我确定在 db 上匹配的项目超过 2 个。 (100% 确定)

【问题讨论】:

    标签: mongodb mongodb-php


    【解决方案1】:
    $range = array('$and' => array(  
         array('$or' => array(
             array("something" => array( "$lte" => $X)),
             array("something" => "null")),
         array('$or' => array(
              array("someother" => array("$gte" => $X)),
              array("someother" => "null"))   
    )); 
    

    【讨论】:

    • 遗憾的是,它对我不起作用......它没有返回任何结果,我敢肯定有超过 1 个......
    • 某些东西 $exists 或者只是字符串“null”?
    • "something" 存在,但它可以有空值,我需要匹配任何情况(空或选定值)的结果,它们也匹配任何“其他”情况(空值或选定值)
    • 顺便说一下,null不是C null,它是字符串“null”,为了实际的做法,我们可以将字符串视为“NLL”,这样不会导致任何混淆。
    • 我更新了我的查询,但没有检查语法。其他人认为为什么要添加'null'。留下它,当查询时检查是否存在 $exists mongodb.org/display/DOCS/…
    猜你喜欢
    • 2018-01-09
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 2022-01-03
    相关资源
    最近更新 更多