您好我正在开发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.上述查询似乎不起作用。什么是正确的?
感谢您提前快速回复。
答案 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 }