0
做這個查詢的查詢邏輯是這樣的:如何在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的條件進入這個查詢。
做這個查詢的查詢邏輯是這樣的:如何在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的條件進入這個查詢。
作爲(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
]
})
您也可以使用$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
});
但我的MongoDB的服務器版本是1.8.2,不支持$和運營商 – helloxk 2014-08-29 01:42:50
如果$和運營商不支持,在APPLICA做灰度級。這是出路。您可能必須在兩個或三個查詢中獲取數據,然後在應用程序級別「與」它們。 – Danish 2014-08-29 04:52:11