MongoDB数据库简笔

MongoDB数据库

0x00 介绍

MongoDB是一个面向文档存储的非关系型数据库,是用C++编写的。
MongoDB将数据存储为一个文档,数据结构由“键值对”组成,字段值
可以包含其他文档、数组及文档数组,类似于JSON对象,如下格式:

{
    "name": "Scrapy爬虫网络",
    "description": "做一个Scrapy爬虫达人",
    "author": "["张三","李四"]",
    "price": "59",
}

MongoDB与SQL对应的术语:

SQLMongoDB
术语英文术语术语英文术语
数据库database数据库database
table集合collection
row文档document
columnfield
索引index索引index
主键primary key主键primary key

0x01 安装MongoDB(略)

0x02 利用python访问MongoDB数据库

1、 安装pymongo

pip install pymongo

2、 连接MongoDB数据库

import pymongo
# 方式一:使用默认的host和port
db_client = pymongo.MongoClient()

# 方式二:自定义host和port参数
db_client = pymongo.MongoClient(host="localhost", port=27017)

# 方式三:使用标准的URI连接语法
db_client = pymongo.MongoClient("mongodb://localhost:27017")

3、 指定数据库

MongoDB可以建立多个数据库,以下代码指定了名称为qidian的数据库:

db = db_client["qidian"]

db_client是上一步中得到的客户端(client)对象,db是返回的数据对象。当然还可以这样指定数据库:

db = db_client.qidian

4、 指定集合(相当于关系型数据库中的表)

以下代码指定了要操作的集合为hot:

db_collection = db['hot']

5、 插入文档

(1)插入与条件匹配的单个文档
novel = {
    'name': '太初',
    'author':'高楼大厦',
    'form':'连载',
    'type':'玄幻'
    }
    
result = db_collection.insert_one(novel)
print(result)       # InsertOneResult类型对象
print(result.inserted_id)   # 添加文档的_id值,作为文档的唯一标识

(2) 插入与条件匹配的所有文档
novel1 = {
    'name': '斗罗大陆',
    'author':'唐家三少',
    'form':'完结',
    'type':'玄幻'
    }
novel2 = {
    'name': '帝国的崛起',
    'author':'终极侧位',
    'form':'连载',
    'type':'都市'
    }
result = db_collection.insert_many([novel1, novel2])
print(result)

6、 查询文档

(1) 查询与条件匹配的单个文档
result = db_collection.find_one({"name": "帝国的崛起"})

相当于

select * from hot where name = "帝国的崛起" LIMIT 0,1
(2) 查询所有文档
cursor = db_collection.find({})

相当于

select * from hot;
(3) 查询与条件匹配的所有文档
cursor = db_collection.find({"type": "历史"})
print(cursor)
for one in cursor:
    print(one)

相当于

select * from hot where type = "历史"

7、 更新文档

(1) 更新与条件匹配的单个文档
# 查询条件
filter = {"name":"帝国的崛起"}
# 更新语句
update = {"$set":{"type":"历史"}}
# 使用update_one()方法更新文档
result = db_collection.update_one(filter, update) 
print(result)               # 返回UpdateResult类型的对象
print(result.raw_result)    # 查看更新后的结果

filter是一个查询条件的字典,update是一个更新语句的字典,key为操作符$set,value为想要更新的字段,也是一个字典。

(2) 更新与条件匹配的所有文档
# 查询条件
filter = {"type":"历史"}
# 更新语句
update = {"$set":{"form":"完本"}}
# 使用update_many()方法更新文档
result = db_collection.update_many(filter, update) 
print(result)               # 返回UpdateResult类型的对象
print(result.raw_result)    # 查看更新后的结果

8、 删除文档

(1) 删除与条件匹配的单个文档
result = db_collection.delete_one({"name":"太初"})
print(result)
print(result.raw_result)
(2) 删除与条件匹配的所有文档
result = db_connection.delete_many({"type":"历史"})
print(result)
print(result.raw_result)

9、 关闭数据库

db_client.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值