查询逻辑是这样的:
(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的条件添加到此查询中。
答案 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
});