python浅学【网络服务中间件】之MongoDB
一、关于MongoDB:
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
二、MongoDB的优势:
- MongoDB 的架构较少。它是一个文档数据库,它的一个集合持有不同的文档。
- 从一个到另一个的文档的数量,内容和大小可能有差异。
- MongoDB 中单个对象的结构很清淅。
- MongoDB 中没有复杂的连接。
- MongoDB 提供深度查询的功能,因为它支持对文档的强大的动态查询。
- MongoDB 很容易扩展。
- 它使用内部存储器来存储工作集,这是其快速访问的原因。
三、MongoDB的简单使用:
连接MongoDB shell:
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
mongodb:// 这是固定的格式,必须要指定。
username:password@ 可选项,如果设置,在连接数据库服务器之后,驱动都会尝试登陆这个数据库
host1 必须的指定至少一个host, host1 是这个URI唯一要填写的。它指定了要连接服务器的地址。如果要连接复制集,请指定多个主机地址。
portX 可选的指定端口,如果不填,默认为27017
/database 如果指定username:password@,连接并验证登陆指定数据库。若不指定,默认打开 test 数据库。
?options 是连接选项。如果不使用/database,则前面需要加上/。所有连接选项都是键值对name=value,键值对之间通过&或;(分号)隔开
以下以windows为例:
PS D:\MongoDB\Server\4.2\bin> .\mongo.exe
MongoDB shell version v4.2.4-14-g88053fe
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("6dd2f853-83f7-4709-beea-0a78e3e49364") }
MongoDB server version: 4.2.4-14-g88053fe
Server has startup warnings:
2020-03-21T12:05:41.197+0800 I CONTROL [initandlisten]
2020-03-21T12:05:41.197+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enab
led for the database.
2020-03-21T12:05:41.197+0800 I CONTROL [initandlisten] ** Read and write access to d
ata and configuration is unrestricted.
2020-03-21T12:05:41.197+0800 I CONTROL [initandlisten]
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc). The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you. To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
--- > show dbs # 查看当前数据库
admin 0.000GB # 数据库帐号信息就存储在admin数据库
config 0.000GB # 存储副本集的配置信息
local 0.000GB # 在本地存储数据
> use test # 创建数据库
switched to db test
> show dbs # 查看数据库发现没有显示,因为里面没有数据
admin 0.000GB
config 0.000GB
local 0.000GB
> db.test.insert({'key':'value'}) # 插入数据
WriteResult({ "nInserted" : 1 })
> show dbs # 再次查看数据库,发现 test 数据库显示
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
> db.test.drop() # 删除数据库
true
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
> db.createCollection('gather') # 创建一个集合
{ "ok" : 1 }
> show collections # 查看集合
gather
> db.gather.insert({name:'riy',sex:'boy',mood:'haha'}) # 集合中插入数据
WriteResult({ "nInserted" : 1 })
> db.gather.find() # 查看集合数据
{ "_id" : ObjectId("5e787d761f3d1841d88ce3f1"), "name" : "riy", "sex" : "boy", "mood" : "haha"
}
> db.gather.update({'sex':'boy'},{$set:{'sex':'girl'}}) # 修改集合中的数据
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.gather.find()
{ "_id" : ObjectId("5e787d761f3d1841d88ce3f1"), "name" : "riy", "sex" : "girl", "mood" : "haha"
}
> db.gather.drop() # 删除集合
true
四、python简单操作MongoDB:
安装pymongo包: pip install pymongo
计算一个库中所有的 collection 数
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Riy import pymongo myclient = pymongo.MongoClient('mongodb://localhost:27017/') # 创建连接
mydb = myclient["test"] # 库名
coll_names = mydb.list_collection_names() # 获取所有collection
k = 0
for i in coll_names:
count = mydb[i].find().count()
k += count
print(k) # 计数
python浅学【网络服务中间件】之MongoDB的更多相关文章
- python浅学【网络服务中间件】之Redis
一.关于NoSQL: NoSQL(NoSQL = Not Only SQL ),"不仅仅是SQL". 相比MySQL等关系型数据库,NoSQL为非关系型的数据存储 Nosql中比较 ...
- python浅学【网络服务中间件】之RabbitMQ
一.关于AMQP: AMQP,即Advanced Message Queuing Protocol,高级消息队列协议. AMQP使符合要求的客户端应用程序能够与符合要求的消息传递中间件代理进行通信. ...
- python浅学【网络服务中间件】之Memcached
一.缓存的由来: 提升性能 绝大多数情况下,select 是出现性能问题最大的地方.一方面,select 会有很多像 join.group.order.like 等这样丰富的语义,而这些语义是非常耗性 ...
- python浅学【网络服务中间件】之Celery
一.关于Celery: 什么是任务队列: 任务队列一般用于线程或计算机之间分配工作的一种机制. 任务队列的输入是一个称为任务的工作单元,有专门的工作进行不断的监视任务队列,进行执行新的任务工作. 什么 ...
- greenev —— Python 异步网络服务框架
greenev是一个基于greenlet协程,事件驱动,非阻塞socket模型的Python网络服务框架,它使得可以编写同步的代码,却得到异步执行的优点. 本项目受到gevent, openresty ...
- 浅谈Django的中间件与Python的装饰器
浅谈Django的中间件 与Python的装饰器 一.原理 1.装饰器是Python的一种语法应用,利用闭包的原理去更改一个函数的功能,即让一个函数执行之前先到另外一个函数中执行其他需求语句,在执行该 ...
- iOS WebServiceFramework网络服务框架浅解
网络服务几乎是每一款成功APP的必备条件,打开你手机你会发现里面不用联网的应用数量十只手指可以数出来,就算是一些以独特技术切入市场的APP如美颜相机,都至少加入了分享功能.下面我先做下简单的回顾兼扫盲 ...
- 学Python Django学得很迷茫,怎么办?-转自知乎
本人学生,零编程基础,在学习python的过程中越学越迷茫,感觉像无头苍蝇一样,来知乎取经,下面进入正题吧: 我是先看了中谷的python教学视频,然后跟着慕课网上的python教程把题 ...
- python高级之网络编程
python高级之网络编程 本节内容 网络通信概念 socket编程 socket模块一些方法 聊天socket实现 远程执行命令及上传文件 socketserver及其源码分析 1.网络通信概念 说 ...
随机推荐
- git push 时不用每次都输入密码的方法
在本地克隆下来的git仓库中找到 .git 目录 (.git 目录是隐藏文件夹 在组织->文件夹和搜索选项-> 查看选项卡 -> 隐藏文件和文件夹 -> 显示隐藏的文件.文件夹 ...
- ubuntu16.04安装mysql5.6
apt-get install software-properties-commonsudo add-apt-repository 'deb http://archive.ubuntu.com/ubu ...
- docker学习读书笔记-一期-整理
0.Docker - 第零章:前言 1.Docker - 第一章:Docker简介 2.Docker - 第二章:第一个Docker应用 3.Docker - 第三章:Docker常用命令 4.Doc ...
- NumPy的随机函数子库——numpy.random
NumPy的随机函数子库numpy.random 导入模块:import numpy as np 1.numpy.random.rand(d0,d1,...,dn) 生成一个shape为(d0,d1, ...
- Rust入坑指南:朝生暮死
今天想和大家一起把我们之前挖的坑再刨深一些.在Java中,一个对象能存活多久全靠JVM来决定,程序员并不需要去关心对象的生命周期,但是在Rust中就大不相同,一个对象从生到死我们都需要掌握的很清楚. ...
- 前端面试题-<!DOCTYPE>
现在的各种前端开发工具都足够强大,支持插入模板代码,也就导致我们往往会忽略已经自动生成的代码,而代码的第一行 DOCTYPE 声明,就是最容易忽略的部分. 一.DOCTYPE DOCTYPE 是 do ...
- iOS应用构建与部署小结
注:本文首发于我的个人博客:https://evilpan.com/2019/04/06/ios-basics/ 上篇文章介绍了Objective-C的基本概念,本文就来接着看如何创建我们的第一个简单 ...
- Object-Oriented Programming Summary Ⅱ
电梯作业总结博客 17373492 电梯,多线程学习中的 "HelloWorld",早在大一就有所耳闻,以至于在坐电梯的时候就思考过:电梯需要怎么写呢? 0. 前言: 偶然的机会, ...
- FPGA边沿检测Verilog代码
FPGA边沿检测Verilog代码(上升沿,下降沿,双边沿) 实现思路:用两个一位寄存器直接异或可以实现 代码实现: module edge_detect( input clk, input rs ...
- html5 中高级选择器 querySelector
简介 HTML5向Web API新引入了document.querySelector以及document.querySelectorAll两个方法用来更方便地从DOM选取元素,功能类似于jQuery的 ...