码迷,mamicode.com
首页 > 数据库 > 详细

mongoDB笔记

时间:2016-11-23 07:10:59      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:技术分享   json   block   code   nat   download   tle   img   logo   

由于最近在整跟爬虫有关的东西,从网上抓下来的大部分数据都存成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笔记

标签:技术分享   json   block   code   nat   download   tle   img   logo   

原文地址:http://www.cnblogs.com/eatPython/p/6091524.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!