MongoDB能够表示较为复杂的非结构化数据。例1演示了在MongoDB中,对GDP数据的增加、删除、修改、查找等操作。
例1:MongoDB数据库操作示例
import pymongo moclient = pymongo.MongoClient("mongodb://localhost:27017/") modb = moclient["xinxisy"] #获得数据库 gdp = modb["gdp"] #获得集合 #用列表定义要插入的多条数据,使用JSON来表示每条记录。 gdpdata =[ {"year":2019,"gdp":990865.10, "primary_industry":70466.70, "secondary_industry":386165.30, "third_industry":534233.10, "province":{"广东":107671.07, "江苏":99631.52, "山东":71067.5 }}, {"year": 2018, "gdp": 900309.00, "primary_industry": 64734.00, "secondary_industry": 366001.00, "third_industry": 469575.00, "province":{"广东":97277.77, "江苏":92595.4, "山东":76469.7 }} ] gdp.delete_many({}) #{},表示删除所有记录 gdp.insert_many(gdpdata) modoc=gdp.find().sort("year",-1) #-1为降序,1或者默认为升序 for x in modoc: print(x) # x['province']['广东']可以访问”广东“对应的GDP query = { "year": 2018 } newvalue = { "$set": { "third_industry": 469575.01 }} gdp.update_one(query, newvalue) query = {"year": 2018} modoc = gdp.find(query) #查询集合中指定条件的数据 for x in modoc: print(x['third_industry']) query = {"year": 2019} gdp.delete_one(query) for x in gdp.find(): print(x) moclient.close() |
下面对代码进行解释:
(1)import pymongo:导入用于Python开发MongoDB的pymongo模块。
(2)pymongo.MongoClient("mongodb://localhost:27017/"):根据给定的主机和端口连接到Mongodb数据库。也可以将(1)改为:from pymongo import MongoClient,再将(2)改为:moClient = MongoClient("mongodb://localhost:27017/")
(3)modb = moclient["xinxisy"]:获得指定名字的数据库,如果数据库不存在,则新建。
(4)gdp = modb["gdp"]:获得指定的集合。这里所说的集合含义与数据库的表的概念类似。如果集合不存在,则新建。对集合的操作,使用集合名.方法名(参数)来进行。
(5) gdp.delete_many():删除集合中的多条记录。参数{}表示删除所有记录。参数使用关键字值对,表示删除指定条件的记录,例如:{"year": 2019},表示删除所有year为2019的记录。
(6)gdp.insert_many(gdpdata) :向集合中插入多条记录。如果只想插入一条记录,则使用insert_one(gdpdata),要求gdpdata是一个JSON数据,不能是列表。
(7)gdp.find().sort("year",-1):find()是获得集合中所有的记录。sort()方法是对某个关键词进行排序,其中-1表示降序,1表示升序。查询处理的记录后,可以通过for循环逐个读取。
(8)gdp.update_one(query, newvalue):根据条件,对集合中的记录进行更新。其中参数query表示更新记录的条件,newvalue表示更新的关键字值对。
(9)gdp.delete_one(query):删除满足条件的一条记录。
END撰稿 | 谢景明
编辑 | 秦慧
审核 | 谢景明、冯敬益
微信号:xinxisuyang
-扫码关注我们-