Python 如何在mongodb中使用“$或”
我是MongoDB新手,在使用Python 如何在mongodb中使用“$或”,python,mongodb,pymongo,Python,Mongodb,Pymongo,我是MongoDB新手,在使用$或操作符时遇到了一个问题 这是我的密码: for element in table1.find(): total += 1 result = table2.find_one({'guanZhi' : element['guanZhi'], 'name' : element['name'],
$或操作符时遇到了一个问题
这是我的密码:
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']或element['qiFen']==result['qifenhou'])
,我想使用$或
,但我不知道如何编写代码
我改成这样:
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
db.inventory.find( {
$and : [
// YOUR CODE HERE,
{ $or : [ { sale : true }, { qty : { $lt : 20 } } ] }
]
} )
但是我很困惑,这个代码看起来还好吗?
我想:
如果我理解正确,我认为您需要同时包含$AND运算符和$OR运算符
我知道你想得到的是:
“您指定的文档”
和({'qiFen':元素['qiFen']}
或“七分火”:元素['qiFen']})
如果是的话。。。尝试将您的代码与以下内容组合:
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
db.inventory.find( {
$and : [
// YOUR CODE HERE,
{ $or : [ { sale : true }, { qty : { $lt : 20 } } ] }
]
} )
对不起,为什么标签javascript
在这里?看起来不错!你在执行过程中遇到过任何问题吗?我已经更新了我的question@BlackMamba即使是最新的看起来也不错!你的意思是“”$或“:[{'qiFen':element['qiFen']},{'qifenhou':element['qiFen']}]
是对的吗?只要它做了你想要它做的事情,它看起来就很好。这意味着,即使没有异常,也需要确保逻辑是您想要的(否则,这将是一个bug)。现在,您告诉Mongo找到满足两个选项之一的第一个文档。。这两个选项类似,只有一个字段不同。但是,即使这两个版本都存在,您也只能获得Mongo找到的第一个版本。当然,你必须用Mongo语法来写。