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 |
pip install pymongo
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")
MongoDB可以建立多个数据库,以下代码指定了名称为qidian的数据库:
db = db_client["qidian"]
db_client是上一步中得到的客户端(client)对象,db是返回的数据对象。当然还可以这样指定数据库:
db = db_client.qidian
以下代码指定了要操作的集合为hot:
db_collection = db['hot']
novel = {
'name': '太初',
'author':'高楼大厦',
'form':'连载',
'type':'玄幻'
}
result = db_collection.insert_one(novel)
print(result) # InsertOneResult类型对象
print(result.inserted_id) # 添加文档的_id值,作为文档的唯一标识
novel1 = {
'name': '斗罗大陆',
'author':'唐家三少',
'form':'完结',
'type':'玄幻'
}
novel2 = {
'name': '帝国的崛起',
'author':'终极侧位',
'form':'连载',
'type':'都市'
}
result = db_collection.insert_many([novel1, novel2])
print(result)
result = db_collection.find_one({
"name": "帝国的崛起"})
相当于
select * from hot where name = "帝国的崛起" LIMIT 0,1
cursor = db_collection.find({
})
相当于
select * from hot;
cursor = db_collection.find({
"type": "历史"})
print(cursor)
for one in cursor:
print(one)
相当于
select * from hot where type = "历史"
# 查询条件
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为想要更新的字段,也是一个字典。
# 查询条件
filter = {
"type":"历史"}
# 更新语句
update = {
"$set":{
"form":"完本"}}
# 使用update_many()方法更新文档
result = db_collection.update_many(filter, update)
print(result) # 返回UpdateResult类型的对象
print(result.raw_result) # 查看更新后的结果
result = db_collection.delete_one({
"name":"太初"})
print(result)
print(result.raw_result)
result = db_connection.delete_many({
"type":"历史"})
print(result)
print(result.raw_result)
db_client.close()
文章浏览阅读7.3k次。幻影解析网(dns.52hyjs.com)专为新手站长提供的免费二级域名解析,域名均免费提供使用专门提供二级域名解析的平台,域名均免费提供使用,不收取任何费用,提供的域名当中有已备案域名和未备案域名,域名后缀多可自主选择解析全站提供免费阿里云企业备案域名 供大家使用https://dns.52hyjs.com/..._二级备案域名分发平台
文章浏览阅读235次。1.开三台服务器,第一台作为nginx负载均衡转发器,ip地址:192.168.241.198第二台作为web页面服务器(nginx)_两台centos7 做nginx负载均衡
文章浏览阅读3.1w次,点赞6次,收藏29次。saas平台架构需要完成从用户申请链接saas到用户对自己购买的功能模块的应用整个过程,用户用起saas看似简单快捷,但这个过程却需要saas平台架构默默完成的非常复杂的处理过程。通过对saas平台架构的了解,可以清晰的分化数据的处理过程,让用户也可以明白saas平台架构处理数据的优势。下面介绍:saas平台架构分为哪几部分。saas平台架构之呈现层saas平台架构的呈现层可以使用的客户端可能都浏..._saas架构介绍
文章浏览阅读317次。项目中引用 jquery.form.js插件。打算用 .ajaxForm(options); 方式提交到后台,但是发现 .ajax 是可以正常交互的,但是 .ajaxform 就是不行。首先在form表单中,button的type问题。form表单中,button 的 type 有三种值。分别是:reset : 如..._引入的jquery.form.js不生效
文章浏览阅读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
文章浏览阅读10w+次,点赞5次,收藏14次。_(:з」∠)_都是每话保存的,第一次这样保存一部漫画,真花费数个小时才完成,需要的就下载=-=-=-=-=-=-==-==-=-=-=-=-=-==-==-=-=-=-=-=-==-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=[190611]狐妖小红娘漫画[1-337][797MB]下载地址:https://waecy2.pipipan.com/f..._黄色动图
文章浏览阅读395次。简单的生产者消费者模式_多线程生产者生产一个汉堡
文章浏览阅读203次。ES6 关于var,let, const的作用域考题
文章浏览阅读2.2k次,点赞3次,收藏4次。17年3月25号去了广州的CVTE技术面.面试官问到如何去统计一个类的实例化对象个数,这里想了一下可以用一个static数据成员去统计,但是这里注意必须在类的外部定义和初始化每个静态成。 不过我们可以为静态成员提供const整数类型的类内初始值,这样子的话要求静态成员必须是字面值常量类型的 constexpr。 下面给出自己的实现。#include using names_static成员自动统计
文章浏览阅读3.5k次。Chrome应用商店https://chrome.google.com/webstore/category/extensions?hl=zh-CN一般需要FQ和谐上网一下。搜索Metamask,那只小狐狸就是Metamask咯。点击小狐狸之后,再点击“添加至Chrome”即可。_meta mask添加网页
文章浏览阅读513次。anaconda3安装及jupyter环境配置全教程,环境,用户组,用户,可以使用,配置文件anaconda3安装及jupyter环境配置全教程易采站长站,站长之家为您整理了anaconda3安装及jupyter环境配置全教程的相关内容。1. 下载可以去清华源下载最新版的anaconda包,这比在官方网站下载快得多,地址如下:https://mirrors.tuna.tsinghua.edu.cn..._python安装jupyter anconda 3.7.0
文章浏览阅读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