mongodb 多 or and 逻辑查询 python实现

本文介绍了如何使用Python处理MongoDB的复合查询,通过转换为后缀表达式(逆波兰式)来实现OR和AND的逻辑组合。借助栈结构,将(A OR B) AND C转化为A B or C and的表达式,类似计算器功能,逐个处理运算符和值。目前,该方法已能处理OR和AND,但尚不支持NOT操作的情况。
摘要由CSDN通过智能技术生成

思路:

1:利用栈结构,将 形如 ( A or B ) and C 转为后缀表达式(逆波兰式),也就是 A B or C and。

2:其实就可以把or 看成 加减号, and 看成乘除号,就类似于计算器的功能实现。

3:有了后缀表达式,依次处理,遇到or,and 依次处理前两个数值,就很方便了。


注:mongodb的表达式根据自己需要替换即可, 不过目前还没有解决not的情况,有待更新。


#encoding: UTF8

def mySplit(s,sep):
	s1 = s.replace(sep,sep+sep)
	lis = s1.split(sep)
	while '' in lis:
		lis[lis.index('')] = sep
	return lis


def MidfixToPostfix(_midfixStr):
	pOut = {
		'#':0,
		'(':7,
		')':1,
		'and':4,
		'or':2
	}
	pIn = {
		'#':0,
		'(':1,
		')':7,
		'and':5,
		'or':3
	}

	string = _midfixStr
	inputList = string.split(' ')
	inputLen = len(inputList)

	tempList = list()   #stack
	tempList.append('#')
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值