MongoDB中的复杂语句和& OR条件

时间:2015-07-20 10:09:07

标签: php mysql mongodb mongodb-query

继续我的项目,我需要将一些SQL语句翻译成mongoDB

我的SQL语句是:

Delete from 'table' where proc_id = $xxx and (day_id < $day OR day_id > $anotherDay)

现在我的条件数组是:

$condicion = array(
            'proc_id' => $xxx,
            '$or' => array(
                'day_id' => array(
                    '$lt' => $day,
                    '$gt' => $anotherDay

                    )
                )
            );

在mongo集合中删除的功能不能删除...

请帮忙吗?

1 个答案:

答案 0 :(得分:2)

每个&#34; day_id&#34;将在其自己的$or论证中:

$query = array(
    'proc_id' = > $xxx,
    '$or' => array(
        array( 'day_id' => array ( '$lt' => $day ) ),
        array( 'day_id' => array ( '$gt' => $anotherDay ) ),
    )
)

这就是$or条件如何作为&#34;列表&#34;可能的表达方式。

JSON语法更清晰可视化:

{
    "proc_id": $xxx,
    "$or": [
        { "day_id": { "$lt": $day } },
        { "day_id": { "$gt": $anotherDay }}
    ]
}

由于&#34; list&#34;之间存在非常明显的区别。和一个&#34;对象&#34;定义。 $or条件是&#34;列表&#34; &#34;对象&#34;,这意味着您列出完整条件,就像它本身就是一个查询一样。因为这不是在$elemMatch内调用的。

当然&#34; DELETE&#34; part是.remove()方法:

$collection->remove($query)

核心文档SQL to MongoDB Mapping Chart中有一些常规示例和资源,如果这些示例没有立即帮助,则链接的文章和演示应该如此。