一、关于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为例:

  1. PS D:\MongoDB\Server\4.2\bin> .\mongo.exe
  2. MongoDB shell version v4.2.4-14-g88053fe
  3. connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
  4. Implicit session: session { "id" : UUID("6dd2f853-83f7-4709-beea-0a78e3e49364") }
  5. MongoDB server version: 4.2.4-14-g88053fe
  6. Server has startup warnings:
  7. 2020-03-21T12:05:41.197+0800 I CONTROL [initandlisten]
  8. 2020-03-21T12:05:41.197+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enab
  9. led for the database.
  10. 2020-03-21T12:05:41.197+0800 I CONTROL [initandlisten] ** Read and write access to d
  11. ata and configuration is unrestricted.
  12. 2020-03-21T12:05:41.197+0800 I CONTROL [initandlisten]
  13. ---
  14. Enable MongoDB's free cloud-based monitoring service, which will then receive and display
  15. metrics about your deployment (disk utilization, CPU, operation statistics, etc).
  16.  
  17. The monitoring data will be available on a MongoDB website with a unique URL accessible to you
  18. and anyone you share the URL with. MongoDB may use this information to make product
  19. improvements and to suggest MongoDB products and deployment options to you.
  20.  
  21. To enable free monitoring, run the following command: db.enableFreeMonitoring()
  22. To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
  23. ---
  24.  
  25. > show dbs  # 查看当前数据库
  26. admin 0.000GB   # 数据库帐号信息就存储在admin数据库
  27. config 0.000GB   # 存储副本集的配置信息
  28. local 0.000GB   # 在本地存储数据
  29. > use test  # 创建数据库
  30. switched to db test
  31. > show dbs  # 查看数据库发现没有显示,因为里面没有数据
  32. admin 0.000GB
  33. config 0.000GB
  34. local 0.000GB
  35. > db.test.insert({'key':'value'})  # 插入数据
  36. WriteResult({ "nInserted" : 1 })
  37. > show dbs  # 再次查看数据库,发现 test 数据库显示
  38. admin 0.000GB
  39. config 0.000GB
  40. local 0.000GB
  41. test 0.000GB
  42. > db.test.drop()  # 删除数据库
  43. true
  44. > show dbs
  45. admin 0.000GB
  46. config 0.000GB
  47. local 0.000GB
  48. > db.createCollection('gather')  # 创建一个集合
  49. { "ok" : 1 }
  50. > show collections  # 查看集合
  51. gather
  52. > db.gather.insert({name:'riy',sex:'boy',mood:'haha'})  # 集合中插入数据
  53. WriteResult({ "nInserted" : 1 })
  54. > db.gather.find()  # 查看集合数据
  55. { "_id" : ObjectId("5e787d761f3d1841d88ce3f1"), "name" : "riy", "sex" : "boy", "mood" : "haha"
  56. }
  57. > db.gather.update({'sex':'boy'},{$set:{'sex':'girl'}})  # 修改集合中的数据
  58. WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
  59. > db.gather.find()
  60. { "_id" : ObjectId("5e787d761f3d1841d88ce3f1"), "name" : "riy", "sex" : "girl", "mood" : "haha"
  61. }
  62. > db.gather.drop()  # 删除集合
  63. true

四、python简单操作MongoDB:

安装pymongo包: pip install pymongo

计算一个库中所有的 collection 数

  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. # Author:Riy
  4.  
  5. import pymongo
  6.  
  7. myclient = pymongo.MongoClient('mongodb://localhost:27017/') # 创建连接
  8. mydb = myclient["test"] # 库名
  9. coll_names = mydb.list_collection_names() # 获取所有collection
  10. k = 0
  11. for i in coll_names:
  12. count = mydb[i].find().count()
  13. k += count
  14. print(k) # 计数

python浅学【网络服务中间件】之MongoDB的更多相关文章

  1. python浅学【网络服务中间件】之Redis

    一.关于NoSQL: NoSQL(NoSQL = Not Only SQL ),"不仅仅是SQL". 相比MySQL等关系型数据库,NoSQL为非关系型的数据存储 Nosql中比较 ...

  2. python浅学【网络服务中间件】之RabbitMQ

    一.关于AMQP: AMQP,即Advanced Message Queuing Protocol,高级消息队列协议. AMQP使符合要求的客户端应用程序能够与符合要求的消息传递中间件代理进行通信. ...

  3. python浅学【网络服务中间件】之Memcached

    一.缓存的由来: 提升性能 绝大多数情况下,select 是出现性能问题最大的地方.一方面,select 会有很多像 join.group.order.like 等这样丰富的语义,而这些语义是非常耗性 ...

  4. python浅学【网络服务中间件】之Celery

    一.关于Celery: 什么是任务队列: 任务队列一般用于线程或计算机之间分配工作的一种机制. 任务队列的输入是一个称为任务的工作单元,有专门的工作进行不断的监视任务队列,进行执行新的任务工作. 什么 ...

  5. greenev —— Python 异步网络服务框架

    greenev是一个基于greenlet协程,事件驱动,非阻塞socket模型的Python网络服务框架,它使得可以编写同步的代码,却得到异步执行的优点. 本项目受到gevent, openresty ...

  6. 浅谈Django的中间件与Python的装饰器

    浅谈Django的中间件 与Python的装饰器 一.原理 1.装饰器是Python的一种语法应用,利用闭包的原理去更改一个函数的功能,即让一个函数执行之前先到另外一个函数中执行其他需求语句,在执行该 ...

  7. iOS WebServiceFramework网络服务框架浅解

    网络服务几乎是每一款成功APP的必备条件,打开你手机你会发现里面不用联网的应用数量十只手指可以数出来,就算是一些以独特技术切入市场的APP如美颜相机,都至少加入了分享功能.下面我先做下简单的回顾兼扫盲 ...

  8. 学Python Django学得很迷茫,怎么办?-转自知乎

    本人学生,零编程基础,在学习python的过程中越学越迷茫,感觉像无头苍蝇一样,来知乎取经,下面进入正题吧:        我是先看了中谷的python教学视频,然后跟着慕课网上的python教程把题 ...

  9. python高级之网络编程

    python高级之网络编程 本节内容 网络通信概念 socket编程 socket模块一些方法 聊天socket实现 远程执行命令及上传文件 socketserver及其源码分析 1.网络通信概念 说 ...

随机推荐

  1. react router为什么推荐使用browserHistory而不推荐hashHistory?

    首先 browserHistory 其实使用的是 HTML5 的 History API,浏览器提供相应的接口来修改浏览器的历史记录:而 hashHistory 是通过改变地址后面的 hash 来改变 ...

  2. python调用adb命令进行手机操作

    Python中执行cmd命令可以用到os和subprocess两个模块. 区别在于os是阻塞式的,subprocess是非阻塞式的,所以一般我们使用subprocess是比较适合的. 接下来我先举一个 ...

  3. 产品需求说明书PRD模版

    <软件自动化测试开发>出版了 XXX产品需求说明书 [版本号:V+数字]                 编  制: 日  期: 评  审: 日  期: 批  准: 日  期:       ...

  4. ES Templates push

    { "order": 0, "template": "connector-connection*", "settings" ...

  5. Selenium&Pytesseract模拟登录+验证码识别

    验证码是爬虫需要解决的问题,因为很多网站的数据是需要登录成功后才可以获取的. 验证码识别,即图片识别,很多人都有误区,觉得这是爬虫方面的知识,其实是不对的. 验证码识别涉及到的知识:人工智能,模式识别 ...

  6. 5G将会是量变到质变的新科技时代

    ​马斯洛需求分为5层,最底层的需求是温饱,过去几十年都无人反驳,但随着科技的发展,人类最基本最底层的需求已经不再是温饱,而是手机和WIFI,当然,这只是网友的调侃罢了,但也从侧面反映出了手机和WFI网 ...

  7. Spring AOP使用方式

    AOP:全称是Aspect Oriented Programming,面向切面编程 Spring AOP的作用和优势: 作用:在程序运行期间,不修改源码对已有方法进行增强 优势:减少重复代码:提高开发 ...

  8. org.springframework.jdbc.UncategorizedSQLException: ### Error updating database. Cause: java.sql.SQLException: Incorrect string value: '\xE2\x80\x8B\xE2\x80\x8B...' for column 'pro_backgroud' at row

    如果你在mysql数据库中,将所有的表的编码格式设置成为utf-8之后还是不行,那就试试这个吧:ALTER TABLE your_database_name.your_table CONVERT TO ...

  9. 并查集(不相交集)的Remove操作

    给并查集(不相交集)的添加一个\(Remove(X)\)操作,该操作把\(X\)从当前的集合中除去并把它放到自己的集合中. 实现思想 英文原句 We assume that the tree is i ...

  10. 使用veloticy-ui生成文字动画

    前言 最近要实现一个类似文字波浪线的效果,使用了velocity-ui这个动画库,第一个感觉就是使用简单,代码量少,性能优异,在此简单介绍一下使用方法,并实现一个看上去不错的动画.具体使用方法可以点击 ...