i new mongodb , have met issue when use $or
operator.
here code:
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 , (element['qifen'] == result['qifen'] or element['qifen'] == result['qifenhuo']): pass else: failed += 1
about (element['qifen'] == result['qifen'] or element['qifen'] == result['qifenhuo'])
, want use $or
, don't know how write code.
i changed this:
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
but confused it, code alright? want:
(guanzhi' : element['guanzhi']) , ('name' : element['name']) , ('minzu' : element['minzu']) , ('keju': element['keju']) , ({'qifen' : element['qifen']} or {'qifenhuo': element['qifen']})
if understand correctly, think need include both $and operator , $or operator...
what understand you're trying is: "the document you've specified" , ({'qifen' : element['qifen']} or 'qifenhuo': element['qifen']})
if so... try combining code this:
db.inventory.find( { $and : [ // code here, { $or : [ { sale : true }, { qty : { $lt : 20 } } ] } ] } )
Comments
Post a Comment