首页 > 代码库 > mongoDB笔记
mongoDB笔记
由于最近在整跟爬虫有关的东西,从网上抓下来的大部分数据都存成JSON格式(python中的字典),而且使用了py3.X,只有使用第三方库pymysql才能连接mysql数据库,自己使用了一下,大概200+的行数才能完成我的需求(包括表的建立,连接数据库,增删改查)。而最近大火的mongoDB只有短短不到80行便完成了我的基本需求,而且它支持的是类似于JSON的BSON格式,逻辑上也更容易理解。
python版本:3.5.0
mongoDB版本:3.2.11
mongoDB下载地址:https://www.mongodb.com/download-center
mongoDB安装:傻瓜式
python模块:pymongo (pip install pymongo) 这里要注意,pip默认下载的版本是比较新的3.x版本,使用的是Client连接方式,而网上大部分教程使用的是Connection方式。
mongoDB安装完成后,mongoDB需要自己手动启动,并指定数据存放地址,打开cmd把当前目录转到mongoDB\bin目录下,创建一个data文件夹(系统并不会自己创建):
执行命令:
mongod --dbpath E:\mongoDB\data\
即可启动mongodb。通过这种方式启动默认为 localhost:27017,通过浏览器跳转到http://localhost:27017/ 提示
It looks like you are trying to access MongoDB over HTTP on the native driver port.
即启动完成。也可以通过指定端口,指定配置启动,这里暂且不谈。
(1)创建Client连接:
from pymongo import MongoClient client = MongoClient() #默认连接 localhost 27017
(2)指定数据库
db = client.mytest #指定数据库
这里的数据库名即为 mytest 它不需要事先存在,当你往里面存储数据时,mongo自然而然的会为你创建它。
(3)指定集合
posts = db.posts #指定集合
这里的集合名为posts,它和数据库一样,并不需要事先存在,作为一个“面向集合”的数据库,集合(collection)大概相当于关系型数据库中的表。
(4)插入数据
#定义两个字典 document1 = {‘a‘:1,‘b‘:2} document2 = {‘a‘:1,‘b‘:2} #插入一条数据 posts.insert_one(document1) posts.insert_one(document2)
你可以通过在字典属性中指定key _id为文档指定id,如果没有指定,mongoDB将自己指定一个不会重复的id。insert_many()可以插入多个文档,参数为list类型如insert_many([document1,document2])
(5)查找数据
# 查找一条数据 字典为查找条件 documentRes=posts.find_one({"a":1}) print(documentRes)
find_one()只返回一条查询结果
#查询多条记录 for post in posts.find({"a":1,"c":3}): print(post)
find()可以查询多条记录,在values中,当然也支持正则匹配。
(6)更新数据
posts.update_one({‘a‘:1},{‘$set‘:{‘x‘:5}})
第一个参数是想要更新的数据,第二个是要更新成什么数据。其中$set部分是必要元素,如果没有会报出错误。除了$set外还有很多其它的比如$inc,对应着不同的功能。上面只是更新匹配到的第一个数据,同样地,也可以用update_many()一次更新多个值。
关于更新可以查看mongoDB文档:http://docs.mongoing.com/manual-zh/reference/method/db.collection.update.html#update-parameter
(7)删除数据
posts.delete_one({‘a‘:1}) posts.delete_one({‘b‘:2})
和上面一样,可以用delete_one()和delete_many()来删除数据,括号中是字典参数,用来作为筛选条件
that‘s all :)
欢迎关注我的微信号 eatPython
mongoDB笔记