鍍金池/ 問答/數(shù)據(jù)庫/ mongo的or查詢

mongo的or查詢

關(guān)于mongodb的or查詢事項,請教如下:
Sql的方式 a='x' and b='x' or ( c in (3,2) )
mongo表現(xiàn)出來的結(jié)果是先查詢了 c in(3,2) 再 進(jìn)行的相關(guān)過濾。
是我的寫法有問題,還是說mongo本身不太支持呢

我現(xiàn)在的寫法是:

db.getCollection('vip_gindex').find({
    'status': 1,
    $or: [{
        'id': {
            $in: [305898, 433975]
        }
    }]
})

結(jié)果就正兒八經(jīng)只查處了兩條出來

回答
編輯回答
空白格

db.getCollection('vip_gindex').find({'$or':[{'$and':[{'a':x},{'b':x}]},{'$and':[{'c':{'$in':[3,4]}}]}]})

2017年11月29日 10:45
編輯回答
憶往昔

你的寫法的意思是:

status = 1 AND id IN (305898, 433975)

$or沒有什么實(shí)際意思,因為是$or后面數(shù)組里每個元素是一個條件,你只給了一個元素。
按你要的

a='x' AND b='x' OR ( c IN (3,2) )

應(yīng)該是:

    db.getCollection('vip_gindex').find({
        $or: [{
            a: 'x',
            b: 'x'
        }, {
            c: {
                $in: [3, 2]
            }
        }]
    });

樓上寫法也沒錯不過復(fù)雜了。

2017年12月10日 10:08