在PHP中使用和运算符查找查询

时间:2015-09-26 09:08:52

标签: mongodb mongodb-query mongodb-php

您好我正在开发Web应用程序的后端&想要从mongodb数据库中找到包含关键active_status的文档,其值设置为1& 2.使用mongodb PHP我很困惑如何在单个查询中找到这两个参数。

我的疑问是:

$mongoDb = MongoDbConnector::getCollection("endusers");
$endUserData = $mongoDb->find(array('active_status' => 1, '$and' => array('active_status' => 2)));

我必须获取active_status应为1&的用户。 2.上述查询似乎不起作用。什么是正确的?

感谢您提前快速回复。

1 个答案:

答案 0 :(得分:1)

你有$and错误的方法。两个论点都需要包含在内:

$endUserData = $mongoDb->find(array(
   '$and' => array( 
       array( 'active_status' => 1 )
       array( 'active_status' => 2 )
   )
));

因为只有在数组元素中查找两个元素时才有意义,所以你应该使用$all,这是更短的语法:

$endUserData = $mongoDb->find(array(
    'active_status' => array( '$all' => array(1,2) )
));

我应该补充一点,除非您打算匹配这样的文档:

{ "active_status" => [1,2] }

您根本不需要$and,而是想要$or或更好$in来获取同一字段上的多个可能值:

$endUserData = $mongoDb->find(array(
    'active_status' => array( '$in' => array(1,2) )
));

这匹配如下文档:

{ "active_status": 1 },
{ "active_status": 2 }