使用python字典动态组合mongo查询语句

在使用myql的时候,由于使用的传统的关系型数据库,可以自己自由拼凑sql来进行查询, 这为多条件的组合查询带来了便利,而mongodb由于其特殊性,需要自己动手利用其特点来组合我们的查询语句

比如参数每个的值可以是true,false或者None, not None,这样他们的组合多样性导致需要写不同的查询才能完成

以python为例,我们先使用pymongo链接mongo

from pymongo import Connection

conn = Connection()

db = conn.blog

python 中如在mongo shell 一样,是使用字典来组织查询条件,因而我们可以很好利用字典的这个特性来动态的组合我们的语句

如下的查询例子

db.article.find({'title':{'$ne':None},'tags':'sql','content':None},{'title':1,'atime':1,'tags':1,'author':1},skip=0,limit=12)

在find中有两个字典,一是查询的字段,一个是查询的条件,我们可以把这两个字典单独拿出来进行动态组合,如下

#查询字段字典
column_dic = {'title':1,'atime':1,'tags':1,'author':1}

#查询条件的字典
condition_dic= {'title':{'$ne':None},'tags':'sql','content':None}
#如果有A B C D 四个参数分别如下
#A:True   B:False  C:False  D: not None

#就可以这样组合查询条件
condition_dic['A']=A
condition_dic['B']=B
condition_dic['C']=C

if D is not None:
	condition_dic['D']={'$ne':None}
else:
	condition_dic['D']=None

于是我们就组合成了自己的查询条件

condition_dic={'A':True,'B':False,'C':False,'D':{'$ne':None}}

在find中进行查询的时候就如下

db.article.find(condition_dic,column_dic,skip=0,limit=0)

猜你喜欢

转载自zhyq0826.iteye.com/blog/1617771
今日推荐