MongoDB
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
MongoDB 是目前最流行的 NoSQL 数据库之一,使用的数据类型 BSON(类似 JSON)。
?
安装?MongoDB(以Windows 平台为例)网址:https://·/try/download/community
下载这个文件,并按提示安装吧。都是下一步下一步,此处不表述了。
全部完成后,运行MongoDBCompass图形界面管理工具,就能看到它的操作界面,OK!
?
准备数据为了说明问题,建立数据库--“通讯录数据库”和集合--“学生名单”,设定age、name、sex等3个字段和输入相关数据,这些一会儿就要用到。
也可以自己先建一个"学生名单.csv"文件,从ADD DATA这个地方导入数据进来。
?
?
PyMongoPython 要连接 MongoDB 需要 MongoDB 驱动,用pip3安装
pip3 install?pymongo
?
操作MongoDB基本过程:导入pymongo库,连接 MongoDB 服务器,指定相关数据库,指定相关集合(表),最后对数据进行增、删、改、查询或排序操作。
源代码:(从上而下,取消多行注释,逐条测试)
from pymongo import MongoClient #import pymongo #注意: 在 MongoDB 中,数据库只有在内容插入后才会创建! 就是说,数据库创建后要创建集合(数据表)并插入一条文档(记录),数据库才会真正创建。 #连接 MongoDB 服务器 方法一 #对应from pymongo import MongoClient #client = MongoClient(host='localhost',port=27017) #方法一 #client=MongoClient('mongodb://localhost:27017/') #方法二 client=MongoClient('mongodb://admin:123456@localhost:27017/')#如果你设定过用户和密码 #连接 MongoDB 服务器 方法二 #对应import pymongo #client=pymongo.MongoClient('mongodb://localhost:27017/') #print(client.list_database_names()) #输出所有数据库 #方法一 #mydb=client.test #数据库 #mycol=mydb.学生名单 #集合,类似SQL的表 #方法二 mydb=client['通讯录数据库'] #print(mydb.collection_names()) #输出所有集合 mycol=mydb['学生名单'] ''' #增加一条 #mydict={'age': 101, 'name': '李四6', 'sex': False} #print(mycol.insert_one(mydict)) #增加多条 mylist=[ {'age': 100, 'name': '李四7', 'sex': False}, {'age': 102, 'name': '李四8', 'sex': True} ] m=mycol.insert_many(mylist) print(m.inserted_ids) #删除一条 myquery={'name':'李四8'} mycol.delete_one(myquery) #删除多条 myquery= {"age":{"$lte":53}} #myquery= {} #删除所有 m=mycol.delete_many(myquery) print(f'{m.deleted_count}被删除了') #删除整个集合 mycol.drop() #修改一条 myquery={'name':'李四6'} newvalue={'$set':{'name':'李四3'}} mycol.update_one(myquery,newvalue) #修改多条 myquery={'name':'李四7'} newvalue={'$set':{'name':'李四9'}} mycol.update_many(myquery,newvalue) #查询第一条 print(mycol.find_one()) #查询所有 for x in mycol.find(): #print(x) print('年龄:{}'.format(x['age'])) #查询指定字段 0为仅显示此字段以外的字段 for x in mycol.find({},{'age':1}): print(x) #查询指定条件 #myquery={'sex':False} myquery= {"age":{"$lte":53}} for x in mycol.find(myquery): print(x) ''' #降序 默认1为顺序 for x in mycol.find().sort('age',-1): print(x) #统计数据条数 print(f'共查到{mycol.count_documents(filter={})}条记录') print(f'共查到小于等于53岁的{mycol.count_documents(filter={"age":{"$lte":53}})}条记录') #其他操作 #对索引进行操作相关方法有create_index()、create_indexes()和drop_index()等。 #有兴趣的同学可以自行练习?
查询条件从上面的例子,我们可以看到查询条件最为复杂,网上资料分享给大家。
例如,查找年龄为20的数据,则写法如下:
results?=?collection.find({'age':?20})??
但是查询条件变为:年龄大于或等于20的数据,则写法如下:
results?=?collection.find({'age':?{'$gte':?20}})?
这里查询的条件键值已经不是单纯的数字了,而是一个字典,其键名为比较符号$gt,意思是大于,键值为20。
?
正则匹配查询
例如,查询名字以M开头的学生数据,则写法如下:
results?=?collection.find({'name':?{'$regex':?'^M.*'}})?
这里使用$regex来指定正则匹配,^M.*代表以M开头的正则表达式。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。 |