1 python pymongo

https://blog.csdn.net/wanger5354/article/details/122118712
https://pymongo.readthedocs.io/en/stable/migrate-to-pymongo4.html 1.2 连接数据库 要使用PyMongo操作MongoDB,首先需要初始化数据库连接。 (1)如果 MongoDB 就运行在本地电脑上,而且也没有修改端口或者添加用户名和密码,则初始化MongoClient的实例不需要带参数,直接写为以下格式: import pymongo conn = pymongo.MongoClient() (2)如果MongoDB运行在其他服务器上,则需要使用“URI(UniformResource Identifier,统一资源标志符)”来指定链接地址 import pymongo conn = pymongo.MongoClient('mongodb://test:12345@45.10.110.77:27019') MongoDB的URI格式如下:mongodb://用户名:密码@服务器IP或域名:端口: (3)如果没有设置权限验证,则不需要用户名和密码,可写为 import pymongo conn = pymongo.MongoClient('mongodb://45.10.110.77:27019') 1.3 连接库与集合 方式1 连接数据库与集合的方法1 from pymongo import MongoClient conn = MongoClient() databae = conn.数据库名 collection = database.集合名 需要注意,在使用这种方式时,代码中的“数据库名”和“集合名”都不是变量名,它们直接就是库的名字和集合的名字。例如,要连接上example_data_1所在的集合,则Python代码如下: from pymongo import MongoClient conn = MongoClient() database = conn.chapter_1 collection = database.example_data_1 方式2 连接数据库与集合方法2 from pymongo import MongoClient db_name = 'chapter_1' collection_name = 'example_data_1' conn = MongoClient() database = conn[db_name] collection = database[collection_name] 在使用这种方式时,在方括号中可以直接填变量来指定库名和集合名。当然,也可以直接填字符串,例如: from pymongo import MongoClient conn = MongoClient() database = conn['chapter_1'] collection = database['example_data_1'] 方式2主要用在需要批量操作数据库的情况下。例如在项目中,有时有多个测试环境,现在需要同时更新这些环境对应的数据库,则可以使用方式2。因为,这样可以将多个数据库的名字或者是多个集合的名字保存在列表中,然后再使用循环来进行操作,如下所示: database_name_list = ['develop_env_alpha','develop_env_beta','develop_env_preflight'] for each_db in database_name_list: database = conn[each_db] collection = database.account collection.updateMany(.....) 其中第3行代码,在循环里面每次连接不同的库,这样写可以同时更新多个数据库的信息,对于同一个数据库里面的多个集合,也可以使用这个方法来操作。 4 从MongoDB中查询数据 查询一条数据: 可以使用 find_one() 方法来查询集合中的一条数据,查询example_data_2 文档中的第一条数据: from pymongo import MongoClient db_name = 'chapter_1' collection_name = 'example_data_1' conn = MongoClient() database = conn[db_name] collection = database[collection_name] x=collection.find_one({}) print(x) 查询集合中所有数据: from pymongo import MongoClient db_name = 'chapter_1' collection_name = 'example_data_1' conn = MongoClient() database = conn[db_name] collection = database[collection_name] collection = database.example_data_2 rows = collection.find() for row in rows: print(row) 逻辑查询: collection.find({'字段名': {'基本符号': 边界值, '基本符号': 边界值}}) 在Python中,从MongoDB中查询所有“age”大于21小于25,并且“name”不等于“夏侯小七”的记录。 collection = database.example_data_2 rows = collection.find({'age':{'$lt':25,'$gt':21}, 'name':{'$ne':'公孙小八'}}) for row in rows: print(row) 查询并对结果进行计数: collection.find().count() 查询并对结果进行计数: # 在Python中 collection.find().sort('字段名', 方向) # 在Robo 3T的命令输入区域 collection.find().sort({'字段名': 方向}) 其中方向为1表示升序,方向为**-1**表示降序 对字段去重: # 对字段去重 handler.distinct('字段名') # 先筛选再去重 handler.distinct('字段名', 查询条件)

# 匹配company_name字符串中含有,医疗美容,科技或者整形的集合
mongo_sq=[
{'$match': {'$or': [{'company_name':{'$regex':".*科技.*"}}, {'company_name': {'$regex':".*医疗美容.*"}},{'company_name':{'$regex':".*整形.*"}}, ]}}]

cursor.aggregate(mongo_sql).batch_size(1)

正则匹配含有一定数量目标字符:


# 匹配company_name中含有3个*的集合
db.tyc_company_info.find({company_name:/\*{3}.*/}).limit(10)

在mongo中这样实现:

{'asr':/若琪/}

1.import re
{'asr':re.compile('若琪')}
2.{'asr':{'$regex':'若琪'}}

1.import re
{'xxx':re.compile('xxx')}
2.{'xxx':{'$regex':'xxx'}}

 

 

db.UserInfo.find{'name' : /zhang/}查询name中包含zhang的结果

filter = {}
keyword = "zhang"
condition = {}
condition['$regex'] = keyword
filter["name"] = condition

res = db.find(filter)



















 

posted @ 2023-02-02 09:01  Sky-wings  阅读(24)  评论(0编辑  收藏  举报