mongodb 数据库
2019-02-04 本文已影响0人
Stranger_I
什么是mongodb ?
'''mongodb 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。
mongodb 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
mongodb 将数据存储为一个文档,数据结构由键值(key=>value)对组成。mongodb 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
mongodb数据库特点
- 模式自由 :可以把不同结构的文档存储在同一个数据库里
- 面向集合的存储:适合存储 JSON风格文件的形式
- 完整的索引支持:对任何属性可索引
- 复制和高可用性:支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目的是提供冗余及自动故障转移
- 自动分片:支持云级别的伸缩性:自动分片功能支持水平的数据库集群,可动态添加额外的机器
- 丰富的查询:支持丰富的查询表达方式,查询指令使用JSON形式的标记,可轻易查询文档中的内嵌的对象及数组
- 快速就地更新:查询优化器会分析查询表达式,并生成一个高效的查询计划
- 高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)
mongodb数据库基本命令:
- 查看当前数据库名称:db
- 列出所有在物理上存在的数据库:show dbs
- 切换数据库:use 数据库名称
- 查看当前数据库信息:db.stats()
- 数据库删除:删除当前指向的数据库,如果数据库不存在,则什么也不做
db.dropDatabase()
比较、范围运算符
- 等于
默认是等于判断,没有运算符
- 小于
db.wzry.find({ age : { $lt : 5} } )
- 小于等于
db.wzry.find({ age : { $lte : 5} } )
- 大于
db.wzry.find( { age : { $gt : 2 } })
- 大于等于
$gte (greater than equal)
- 不等于
$ne (not equal)
- 在范围内
db.wzry.find( {age : { $in : [4,6] } } )
- 不在范围内
db.wzry.find( { age : { $nin : [4,6] } } )
逻辑运算符
逻辑与 (and)
db.wzry.find({age:5,type:'呵呵'})
逻辑或 (or)
db.wzry.find({$or:[{age:5},{type:'呵呵'}]})
mongodb 与 Python交互:
安装python包
sudo pip3 install pymongo
导入模块
import pymongo
建立与MongoClient的连接
client = MongoClient('localhost',27017)
得到数据库
db = client.数据库名
得到一个集合
collection = db.集合名称
from pymongo import *
"""
插入方法:
insert_one() 传入一个字典,表示插入一个文档
insert_many() 传入一个列表,列表的元素为字典,插入多条文档
"""
def insert():
try:
# 1. 创建连接对象
client = MongoClient(host='localhost', port=27017)
# 2. 获取数据库
# 如果这个数据库不存在,就会在内存中虚拟创建
# 当在库里面创建集合的时候,就会在物理真实创建这个数据库
db = client.demo # 使用demo数据库
# 向stu集合插入数据
# 插入一条
db.stu.insert_one({'name': 'zs', 'age': 'lisi'})
# 插入多条
db.stu.insert_many([{'name': 1}, {'name': 2}])
except Exception as e:
print(e)
if __name__ == '__main__':
insert()