Mongodb-PHP:使用' $和'查找查询功能不起作用

时间:2015-03-03 07:51:31

标签: mongodb mongodb-query mongodb-php

我正在研究mongodb& php&想要根据多种条件检索数据。

我想要检索form_status同时处于活动状态的表单。仅草稿

我的查询是:

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

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

1 个答案:

答案 0 :(得分:1)

$and运算符采用“真实数组”的文档作为参数。在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但是对于$in的相同字段也可以更明确地写出:

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

所以$all $and $in $or到{{1}}是什么,但只允许您使用相同的字段而不指定完整的文档格式