1.何为数据库?
数据库,顾名思义,就是数据存储的一个仓库。个人理解,与普通的文件不同,数据库因为是专门用于存储特定格式的数据,所以术业有专攻,它在处理数据相关的事务时更为专业和高效。当然,有的文件也可一定程度上接近数据库的部分功能,比如Excel,甚至可以说Excel这种表格形式就是关系型数据库的原型。这里,数据库存储的特定格式一般可分为两类:一个是相对苛刻的类型,即关系型数据库,如SQL,因为其严格按照表格的形式存储数据,且各列对应特定的数据类型(如数值、字符串等),所以数据存储限制更多;另一个是文档型存储格式,也叫非关系型数据库(NoSQL,Not only SQL),如MongoDB(也有说MongoDB是介于关系型和非关系型之间的一种类型数据库),里面实际上用到的就是类似JSON(官方说法叫BSON,即二进制的JSON)的存储格式,对于数据内容和格式要求更为宽松。二者各有其独特用武之地,只有合适与不合适,不存在孰优孰劣。
2.MongoDB数据库
MongoDB,实际上取自humongous一词(跟芒果毫无关联),意味巨大的数据库。在数据库系统排名中,MongoDB长期排于第5左右的位置,前4名均为关系型数据库。
在关系型数据库中,数据库的三级结构是数据库(Database)——表(Table)——行(Row),类似地,在MongoDB中,这三级结构分别为数据库(Database)——集合(Collection)——文档(Document),所以在部分操作和理解中可以类比进行设置操作语句。
3.相关可视化工具
数据库若不能“可视”,那么就好像一个黑箱子一样,是非常不利于使用者直观的对库存中的数据去查看和管理的,所以数据库可视化工具应运而生。相关的工具非常多,也都有各自特色,目前主要使用的是NoSQLBooster。NoSQLBooster,前身是mongobooster,是比较好用的一款MongoDB可视化工具,分为免费版和收费版,收费版功能会更齐全,声称做“The Smartest IDE for MongoDB”。几个比较好用的功能:支持数据Tree、Json和Table三种格式显示,支持Query方式查询数据(查询语句生成器),非常适用于数据库新手操作使用,同时还支持转换生成其他语言代码,如转换成Python就会非常有意义。
4.常用的操作方法
数据库最主要的操作方法有四种,即增删改查,掌握这四招即可以完成数据库的绝大部分工作。
首先讲在Python中如何实现与MongoDB数据库的连接
connection = pymongo.MongoClient('Localhost', 27017)#获取MongoDB的连接
db = connection['wwxd']#或connection.wwxd,将当前操作数据库指定至wwxd数据库,记做db
collection = db['comments']# 或db.comments,获取wwxd数据库下的comments集合,记做collection
上面3条语句分别实现了与MongoDB连接——指定数据库——指定集合,而后的操作就是针对当前集合进行。
4.1增。主要是应用insert方法。在指定集合后,在当前集合中增加一条或多条文档的语句为
collection.insert_one(document)#document为一条字典格式数据
collection.insert_many(documents)#documents为多条字典格式数据
4.2删。主要是应用remove方法实现,示例如下:
collection.remove({查询条件})#删除所有满足查询条件的数据
如果只想删除满足查询条件的第一条数据,则可增加 justOne 为 1参数,如
collection.remove({查询条件},1)#删除满足查询条件的第一条数据
4.3改。主要是应用update方法,示例如下:
collection.update({查询条件},{$set:{待修改内容}})#对满足查询条件的文档完成待修改内容更新
与删除功能不同,当集合中存在多条文档满足查询条件,则上述语句默认只会修改第一条发现的文档。如果想要修改所有满足要求的文档,则需要增加 multi 参数为 true,如
collection.update({查询条件},{$set:{待修改内容}},{multi:true})#修改多条
另外,也可应用save方法实现目标文档的更新,即借助MongoDB唯一内置_id来实现文档修改。
4.4查。查才是数据库的灵魂所在,也是体现数据库维护管理水平差距的地方。包括在删除和修改两类操作中,实际上也是用到了查询操作。主要是应用find方法,查询条件可以是多种多样,对于数值型可以是大于、小于、等于、位于区间等等,对于字符串则可以是等于、包含、正则匹配等等。
另外,数据库的操作还包括很多,如聚合、排序等,这些都是要靠在实际应用中慢慢摸索和积累掌握的。