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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,可以使用pymongo库来执行MongoDB的查询语句。以下是几个常用的查询语句的示例: 1. 查询集合中的所有文档: ```python import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient["test"] mycol = mydb["sites"] for x in mycol.find(): print(x) ``` 这段代码使用`find()`方法查询集合中的所有文档,并通过循环遍历输出每个文档的内容。 2. 根据条件过滤数据: ```python import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient["test"] mycol = mydb["sites"] myquery = {"name": "淘宝"} mydoc = mycol.find(myquery) for x in mydoc: print(x) ``` 这段代码使用`find()`方法并传入一个查询条件参数`myquery`,以过滤集合中的文档数据。在本例中,使用条件`{"name": "淘宝"}`来查询`name`字段等于"淘宝"的文档。 3. 查询集合中的第一个文档: ```python import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient["test"] mycol = mydb["sites"] x = mycol.find_one() print(x) ``` 这段代码使用`find_one()`方法来查询集合中的第一个文档,并将结果存储在变量`x`中,然后将其输出。 这些是基本的Python MongoDB查询语句示例。你可以根据需要进一步了解pymongo库中的其他查询方法和参数,以满足你的具体需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python操作mongodb数据库-查询集合数据](https://blog.csdn.net/xxt201/article/details/122781169)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值