Mongodb-PHP:使用“$and”函数查找查询无效

Mongodb-PHP: find query with '$and' function is not working

我正在研究 mongodb & php 并且想根据多个条件检索数据。

我想检索 form_status 仅处于活动状态和草稿状态的表单

我的查询是:

$formData = $formInfo->find(array('team_id' => $_GET['id'], '$and' =>array('form_status' => 'Active','form_status' => 'Draft')));

它不起作用。 PHP 中的正确语法是什么??

$and 运算符将 "real array" 文档作为参数。在 PHP 中,您包装数组以产生这种语法:

$formData = $formInfo->find(
    array(
        'team_id' => $_GET['id'], 
        '$and' => array(
            array( 'form_status' => 'Active' ),
            array( 'form_status' => 'Draft' )
        )
    )
);

请注意,除非 "form_status" 实际上是数组本身,否则这真的没有任何意义。在这种情况下,$all 运算符是一种更简洁的方法:

$formData = $formInfo->find(
    array(
        'team_id' => $_GET['id'], 
        'form_status' => array( 
            '$all' => array( 'Active', 'Draft' )
        )
    )
);

再一次,如果这个字段不是数组,那么你的意思是 $or but that can also be more clearly written for the same field with $in:

$formData = $formInfo->find(
    array(
        'team_id' => $_GET['id'], 
        'form_status' => array( 
            '$in' => array( 'Active', 'Draft' )
        )
    )
);

所以 $all 之于 $and 就像 $in 之于 $or,但只允许您使用相同的字段而无需指定完整的文档形式