$ match中的嵌套布尔查询

时间:2017-06-26 20:46:11

标签: mongodb mongoose mongodb-query aggregation-framework

我在文档中找不到对此概念的引用,所以我想我在这里问。我们正在使用一些布尔查询逻辑,并且我一直致力于使用以下内容构建$match阶段:

{ '$match': 
 { '$or': 
    [ { depth: { '$or': [ { '$gt': 1 }, { '$lte': 36 }, { '$ne': 15 } ] } },
      { height: { '$and': [ { '$gt': 1 }, { '$lte': 36 }, { '$ne': 15 } ] } } ] } },

任何人都可以确认是否支持这种类型的嵌套布尔逻辑?

在我的测试中,它不会返回任何结果,但它也不会引发任何异常。

谢谢!

1 个答案:

答案 0 :(得分:2)

正确的语法应该是

{$match: {
    $and: [
        {depth: {$gt: 1}},
        {depth: {$lte: 36}},
        {depth: {$ne: 15}},
        {height: {$ne: 15}},
        .... etc ....
    ]
}}

虽然这种查询有一种更简单的方法..

{$match: {
    depth: {$gt: 1, $lte: 36, $ne: 15},
    height: {$gt: 1, $lte: 36, $ne: 15}
}}

<强>更新

这是您的更新后查询

{$match: {
    $or: [
        {depth: {$gt: 1}},
        {depth: {$lte: 36}},
        {depth: {$ne: 15}},
        {height: {$gt: 1, $lte: 36, $ne: 15}} 
    ]
}}