簡體   English   中英

如何在mongodb中使用`$ or`

[英]How to use `$or` in mongodb

我是MongoDB的新手,使用$or運算符時遇到了一個問題。

這是我的代碼:

for element in table1.find():
        total += 1
        result = table2.find_one({'guanZhi' : element['guanZhi'], 
                                  'name'    : element['name'],
                                  'minZu'   : element['minZu'],
                                  'keJu'    : element['keJu']})

        if result and (element['qiFen'] == result['qiFen'] or 
                       element['qiFen'] == result['qiFenHuo']):
            pass
        else:
            failed += 1

關於(element['qiFen'] == result['qiFen'] or element['qiFen'] == result['qiFenHuo']) ,我想使用$or ,但是我不知道如何編寫代碼。

我這樣更改它:

for element in table1.find({'ji': ""}):
        if table2.find_one({'guanZhi' : element['guanZhi'],
                            'name'    : element['name'],
                            'minZu'   : element['minZu'],
                            'nian'    : element['nian'],
                            '$or'     : [{'qiFen' : element['qiFen']}, {'qiFenHuo': element['qiFen']}]}):
            match.write(formatElement(element))
        else:
            no_match.write(formatElement(element))
            failed += 1

但是我對此感到困惑,這段代碼看起來還不錯嗎? 我想要:

(guanZhi' : element['guanZhi']) and 
('name' : element['name'])      and 
('minZu'   : element['minZu'])  and 
('keJu': element['keJu'])       and 
({'qiFen' : element['qiFen']}   or  {'qiFenHuo': element['qiFen']})

如果我對您的理解正確,我認為您需要同時包含$ AND運算符和$ OR運算符...

據我了解,您想要獲取的是:“您指定的文檔” AND({'qiFen':element ['qiFen']}或'qiFenHuo':element ['qiFen']})

如果是這樣,請嘗試將您的代碼與以下內容組合:

db.inventory.find( {
    $and : [
        // YOUR CODE HERE,
        { $or : [ { sale : true }, { qty : { $lt : 20 } } ] }
    ]
} )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM