`
三月沙
  • 浏览: 620447 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用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)

 

 

1
1
分享到:
评论

相关推荐

    Python库 | mongoquery-1.3.4.tar.gz

    MongoQuery的核心功能在于将Python表达式转换为MongoDB的查询语句。这使得开发人员可以使用类似Python的语法来构建复杂的查询,而无需直接与PyMongo的低级API打交道。例如,你可以直接用Python的字典或类方法来表示...

    完整版 Python高级开发课程 高级教程 07 Python操作MongoDB数据库.pptx

    5. **查询语法**:在PyMongo中,查询通常使用字典或元组表示条件,如`db.orders.find({"total": {"$gt": 250}})`将返回所有`total`字段大于250的文档。 6. **聚合框架**:MongoDB提供强大的聚合框架,允许对数据...

    python scrapy爬虫+存储到mysql和mongo数据库中

    Item是Scrapy中表示爬取数据的类,它们类似于Python的字典,但提供了更多的类型检查和验证功能。Pipeline则是一个个处理Item的阶段,可以用来执行数据清洗、验证和持久化操作。 对于MySQL存储,可以使用`pymysql`库...

    mongo中模糊查询的综合应用

    这段MongoDB查询语句使用了 `$or` 条件操作符,它允许我们同时检查多个条件,这里是在 `name` 和 `content` 字段中寻找 "正大"。`$gte` 和 `$lte` 分别表示“大于等于”和“小于等于”,用于筛选 `update_time` 在...

    python批量导入MongoDB数据库

    - 脚本运行过程中使用`print`语句输出进度信息,帮助用户了解当前操作状态。 这个脚本对于批量导入非标准格式的数据到MongoDB提供了一个基础框架,但可能需要根据实际数据格式进行调整。例如,如果数据格式不是...

Global site tag (gtag.js) - Google Analytics