MongoDB数据库简笔_ufly哪个航空-程序员宅基地

技术标签: 爬虫  mongodb  Python  

MongoDB数据库

0x00 介绍

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

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

MongoDB与SQL对应的术语:

SQL MongoDB
术语 英文术语 术语 英文术语
数据库 database 数据库 database
table 集合 collection
row 文档 document
column field
索引 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()
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42324313/article/details/108069393

智能推荐

免费二级域名分发企业备案域名 阿里云备案域名_二级备案域名分发平台-程序员宅基地

文章浏览阅读7.3k次。幻影解析网(dns.52hyjs.com)专为新手站长提供的免费二级域名解析,域名均免费提供使用专门提供二级域名解析的平台,域名均免费提供使用,不收取任何费用,提供的域名当中有已备案域名和未备案域名,域名后缀多可自主选择解析全站提供免费阿里云企业备案域名 供大家使用https://dns.52hyjs.com/..._二级备案域名分发平台

nginx探索(7)nginx搭建负载均衡(centos7环境下)_两台centos7 做nginx负载均衡-程序员宅基地

文章浏览阅读235次。1.开三台服务器,第一台作为nginx负载均衡转发器,ip地址:192.168.241.198第二台作为web页面服务器(nginx)_两台centos7 做nginx负载均衡

saas平台架构分为哪几部分_saas架构介绍-程序员宅基地

文章浏览阅读3.1w次,点赞6次,收藏29次。saas平台架构需要完成从用户申请链接saas到用户对自己购买的功能模块的应用整个过程,用户用起saas看似简单快捷,但这个过程却需要saas平台架构默默完成的非常复杂的处理过程。通过对saas平台架构的了解,可以清晰的分化数据的处理过程,让用户也可以明白saas平台架构处理数据的优势。下面介绍:saas平台架构分为哪几部分。saas平台架构之呈现层saas平台架构的呈现层可以使用的客户端可能都浏..._saas架构介绍

jquery.form.js失效问题。-程序员宅基地

文章浏览阅读317次。项目中引用 jquery.form.js插件。打算用 .ajaxForm(options); 方式提交到后台,但是发现 .ajax 是可以正常交互的,但是 .ajaxform 就是不行。首先在form表单中,button的type问题。form表单中,button 的 type 有三种值。分别是:reset : 如..._引入的jquery.form.js不生效

SI5338 时钟芯片驱动-程序员宅基地

文章浏览阅读5.2k次,点赞4次,收藏12次。该时钟芯片可以做到任意频率的时钟输出控制接口为IIC接口,主要的资料为 :AN428.pdfSi5338-RM.pdfSi5338芯片手册我们首先应该芯片手册,然后对应寄存器说明为Si5338-RM.pdf,AN428里给了一个单片机的demo此外由于寄存器比较多,我们可以借助官方提供的工具软件设置好参数通过export可获取对应的寄存器的值下面是大概的IIC时序代码:/*Si5338.cCreated on: 2020年9月13日 Author: Administr._si5338

【资源集合/国产】狐妖小红娘动画+漫画[带P站精选红红图]_黄色动图-程序员宅基地

文章浏览阅读10w+次,点赞5次,收藏14次。_(:з」∠)_都是每话保存的,第一次这样保存一部漫画,真花费数个小时才完成,需要的就下载=-=-=-=-=-=-==-==-=-=-=-=-=-==-==-=-=-=-=-=-==-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=[190611]狐妖小红娘漫画[1-337][797MB]下载地址:https://waecy2.pipipan.com/f..._黄色动图

随便推点

Java多线程-生产者消费者模式_多线程生产者生产一个汉堡-程序员宅基地

文章浏览阅读395次。简单的生产者消费者模式_多线程生产者生产一个汉堡

ES6 关于var,let, const的作用域考题-程序员宅基地

文章浏览阅读203次。ES6 关于var,let, const的作用域考题

关于C++中用静态成员统计实例化对象个数问题_CVTE技术面问题_static成员自动统计-程序员宅基地

文章浏览阅读2.2k次,点赞3次,收藏4次。17年3月25号去了广州的CVTE技术面.面试官问到如何去统计一个类的实例化对象个数,这里想了一下可以用一个static数据成员去统计,但是这里注意必须在类的外部定义和初始化每个静态成。 不过我们可以为静态成员提供const整数类型的类内初始值,这样子的话要求静态成员必须是字面值常量类型的 constexpr。 下面给出自己的实现。#include using names_static成员自动统计

如何在浏览器中添加Metamask_meta mask添加网页-程序员宅基地

文章浏览阅读3.5k次。Chrome应用商店https://chrome.google.com/webstore/category/extensions?hl=zh-CN一般需要FQ和谐上网一下。搜索Metamask,那只小狐狸就是Metamask咯。点击小狐狸之后,再点击“添加至Chrome”即可。_meta mask添加网页

python3.7怎么安装jupyter_anaconda3安装及jupyter环境配置全教程-程序员宅基地

文章浏览阅读513次。anaconda3安装及jupyter环境配置全教程,环境,用户组,用户,可以使用,配置文件anaconda3安装及jupyter环境配置全教程易采站长站,站长之家为您整理了anaconda3安装及jupyter环境配置全教程的相关内容。1. 下载可以去清华源下载最新版的anaconda包,这比在官方网站下载快得多,地址如下:https://mirrors.tuna.tsinghua.edu.cn..._python安装jupyter anconda 3.7.0

已解决Could not fetch URL https://pypi.tuna.tsinghua.edu.cn/simple/pip/: There was a problem confirming-程序员宅基地

文章浏览阅读2.6w次,点赞30次,收藏72次。已解决(pip升级报错)WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simpleRequirement already satisfied: pip in e:\anaconda\install_root\lib\_could not fetch url

推荐文章

热门文章

相关标签