PHP MongoDB查找,带有多个;及;条件

PHP MongoDB查找,带有多个;及;条件,php,mongodb,Php,Mongodb,经过数小时的实验和阅读,我无法找到解决这个问题的方法: 我想使用多个AND条件执行MongoDB->find($query) 例如,假设我想要id=5,a2,b>10,b数组( 排列( “id”=>5, “a”=>数组(“$gt'=>2,$lt'=>6), “b”=>数组(“$gt'=>10,$lt'=>20) ) ) ); $docs=$coll->find($condition); foreach($o=>$doc形式的文档){ echo json_编码($doc); } 以上仅返回第一个

经过数小时的实验和阅读,我无法找到解决这个问题的方法:

我想使用多个AND条件执行
MongoDB->find($query)

例如,假设我想要id=5,a<6,a>2,b>10,b<20

我希望$query是:

$query = array("id" => 5,
   "a" => array('$gt' => 2,  
           '$lt' => 6),
   "b" => array('$gt' => 10,
           '$lt' => 20))
但这会返回带有我的DB的空结果

我尝试了各种语法,例如:

$query = array("id" => 5,
          array( "a" => array('$gt' => 2,
              '$lt' => 6),
       "b" => array('$gt' => 10,
             '$lt' => 20)))
但这也失败了

还尝试了
“$和”
变体,但运气不佳


是否可以在PHP MongoDB
find()
请求中“混合”几个
条件?

我刚刚使用MongoDB PHP驱动程序v1.6.11(PHP-5.5.9)测试了这一点。测试数据如下所示

db.collection.insert({id:5,a:4,b:15})
insert({id:9,a:4,b:15})
insert({id:5,a:4,b:20})
使用PHP代码段:

$condition=array(
“$和”=>数组(
排列(
“id”=>5,
“a”=>数组(“$gt'=>2,$lt'=>6),
“b”=>数组(“$gt'=>10,$lt'=>20)
)
)
);
$docs=$coll->find($condition);
foreach($o=>$doc形式的文档){
echo json_编码($doc);
}
以上仅返回第一个文档示例。这表明,
$和
应按预期工作。我也在没有
$和
的情况下进行了测试,即:

$condition=array(
“id”=>5,
“a”=>数组(“$gt'=>2,$lt'=>6),
“b”=>数组(“$gt'=>10,$lt'=>20)
);

这也是同样的道理。尝试检查您的数据集,看是否有与您的条件匹配的文档

我刚刚使用MongoDB PHP驱动程序v1.6.11(PHP-5.5.9)测试了这一点。测试数据如下所示

db.collection.insert({id:5,a:4,b:15})
insert({id:9,a:4,b:15})
insert({id:5,a:4,b:20})
使用PHP代码段:

$condition=array(
“$和”=>数组(
排列(
“id”=>5,
“a”=>数组(“$gt'=>2,$lt'=>6),
“b”=>数组(“$gt'=>10,$lt'=>20)
)
)
);
$docs=$coll->find($condition);
foreach($o=>$doc形式的文档){
echo json_编码($doc);
}
以上仅返回第一个文档示例。这表明,
$和
应按预期工作。我也在没有
$和
的情况下进行了测试,即:

$condition=array(
“id”=>5,
“a”=>数组(“$gt'=>2,$lt'=>6),
“b”=>数组(“$gt'=>10,$lt'=>20)
);

这也是同样的道理。尝试检查您的数据集,看是否有与您的条件匹配的文档

此问题已解决:数据库中的值类型错误(字符串而不是float/double)。在数据库中更新到正确的类型时按预期工作

此问题已解决:数据库中的值类型错误(字符串而不是float/double)。在数据库中更新到正确的类型时按预期工作

我不是SME,但MondoDB是MongoDB上的一个拼写错误吗?@MartinCowie当然,修正了!Thx.我不是SME,但MondoDB是MongoDB上的一个拼写错误吗?@MartinCowie,当然,修正了!谢谢你检查这个。我已经发现问题是值的类型不正确。它们是字符串,而不是float(双精度)。使用正确的类型更新数据库后,它将按预期工作。感谢您检查此项。我已经发现问题是值的类型不正确。它们是字符串,而不是float(双精度)。使用正确的类型更新数据库后,它将按预期工作。