如何在mongoDB中执行此查询

时间:2014-08-29 01:22:53

标签: mongodb

查询逻辑是这样的:

(A > x OR A < y) AND (B > m OR B < n) AND C = z

db.test.find({$or:[{A:{$gt:x}}, {A:{$lt:y}}], C:z})

但是如何将B的条件添加到此查询中。

2 个答案:

答案 0 :(得分:1)

成为(A > x OR A < y) A和(B > m OR B < n) B,然后其余的C将它们包装在$和比较中:{$and: [A, B, C]},例如:

db.test.find({
    $and: [
        {$or: [{A: {$gt: x}}, {A: {$lt: y}}]}, 
        {$or: [{B: {$gt: m}}, {B: {$lt: n}}]}, 
        C: z
    ]
})

答案 1 :(得分:0)

由于您可以使用$or但无法使用$and,因此您可以拆分第一个查询组(共3组),如下所示:

db.test.find({
    $or : [ {
        A : {
            $gt : x
        },
        $or : [ {
            B : {
                $gt : m
            }
        }, {
            B : {
                $lt : n
            }
        } ]
    }, {
        A : {
            $lt : y
        },
        $or : [ {
            B : {
                $gt : m
            }
        }, {
            B : {
                $lt : n
            }
        } ]
    } ],
    C : z
});