Python 操作 MongoDB

1.导入pymongo 数据库模块
在导入pymongo之前,需要安装pymongo模块。使用pip安装,命令如下:pip install pymongo
安装成功后,导入pymongo模块:
import pymongo
2.建立连接
pymongo模块使用MongoClient对象来描述一个数据库客户端,创建对象所需的参数主要是host和port。常见的有三种形式:
client= pymongo.MongoClient()
client = pymongo.MongoClient('localhost',27017).
client = pymongo.MongoClient('mongodb://localhost:27017/')
第一种方式是连接默认的主机IP和端口,第二种显式指定I和端口,第三种是采用URL格式进行连接。
3.获取数据库
一个 MongoDB实例可以支持多个独立的数据库。使用pymongo时,可以通过访问MongoClient的属性的方式来访问数据库:
db = client.papers
如果数据库名字导致属性访问方式不能用(比如pa-pers ),可以通过字典的方式访问数据库:
db = client [ 'pa-pers ' ]

4.获取一个集合
一个collection 指一组存在于MongoDB中的文档,获取Collection方法与获取数据库方法一致:
collection = db.books
或者使用字典方式:
collection = db [ ' books ' ]
需要强调的一点是,MongoDB里的collection 和数据库都是惰性创建的,之前我们提到的所有命令实际并没有对 MongoDB Server进行任何操作。直到第一个文档插入后,才会创建,这就是为什么在不插入文档之前,使用show dbs查看不到之前创建的数据库。
5.插入文档
数据在 MongoDB中是以JSON类文件的形式保存起来的。在PyMongo中用字典来代表文档,使用insert(方法插入文档,示例如下:
book = { " author" :"Mike" ,
"text" :"My first book ! " ,
"tags" :[ "爬虫","python" ,"网络"〕,"date" : datetime.datetime.utcnow ( )}
book_id= collection .insert ( book )
文件被插入之后,如果文件内没有_id这个键值,那么系统自动添加一个到文件里。这是一个特殊键值,它的值在整个collection里是唯一的。insert()返回这个文件的_id值。
除了单个文件插入,也可以通过给insert()方法传入可迭代的对象作为第一个参数,进行批量插入操作。这将会把迭代表中的每个文件插人,而且只向Server 发送一条命令:
 

books = [ i " author" :"Mike " ,"text" :"My first book ! " ,
"tags " :[ "爬虫","python" ,"网络" 〕," date" : datetime.datetime.utcnow ( )}, { " author" : " aiye" ,
"text" :"My sec book ! " ,
"tags " : [ " hack" , "python","渗透"〕," date" : datetime.datetime.utcnow ( )} ]
books id = collection.insert ( books)

6.查询文档
MongoDB中最基本的查询就是find_one。这个函数返回一个符合查询的文件,或者在没有匹配的时候返回None。示例如下:
collection.find_.one ( )
返回结果是一个之前插入的符合条件的字典类型值。注意,返回的文件里已经有了_i这个键值,是数据库自动添加的。
find_one()还支持对特定元素进行匹配查询。例如筛选出author为qiye的文档,代码如下:collection.find_one ( ( "author" : "qiye" } )
通过_id也可以进行查询,book_id就是返回的id对象,类型为ObjectId。示例如下:
collection.find_one ( {'_id': 0bjectId ( '58344fcc1123ea2e54cb2e0f' ) })
这个常用于Web应用,可以从URL 抽取id,从数据库中进行查询。
如果想获取多个文档,可以使用find()方法。find()返回一个 Cursor实例,通过它我们可以获取每个符合查询条件的文档。示例如下:
for book in collection. find ( ) :
print book
与使用find_one()时候相同,可以传入条件来限制查询结果。比如查询所有作者是qiye的书:
for book in collection.find ( { "author" : "aiye" } ) :
print book
如果只想知道符合查询条件的文件有多少,可以用count()操作,而不必进行完整的查询。示例如下:
collection.find ( { "author" : "aiye" } ) .count ( )
7.修改文档
MongoDB可以使用update()和 save()方法来更新文档,和之前在MongoDB shell 中的操作类似。示例如下:
collection.update ( { "author" : "qiye" } , { "$set " : { "text " : "python book " } })
8.删除文档
MongoDB使用remove(方法来删除文档。示例如下:
collection.remove ( { "author" : "aiye" } )
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天道工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值