mongodb

MongoDb
数据库分类
关系型数据库
MySql
DB2
SQL Server
Oracle
关系数据库的四大原则(acid)
原子性
a,要么成功,要么失败
一致性
c,约束关系a+b=10,如果a变了,b也要变,维持约束关系a+b=10
独立性
i,事务之间相互独立
持久性
d,数据一旦提交到数据库,就永不丢失
MongoDB定义
面向文档的,分布式存储开源数据库
采用类似json的bson格式的序列化文档存储
不支持事务
占用空间大,是以空间换取时间
NoSQL的优缺点
优点
扩展方便
分布式
cap定理
cap又称布鲁尔定理,是指在分布式计算系统中,不可能同时满足三点,只能最多满足其中两点:
一致性:所有节点的数据保持一致
可用性:保证每个请求不管成功或者失败都有回应
分隔容错:系统中的任何信息丢失或者失败不影响系统的正常运行
架构灵活
没有复杂的关系
内存映射技术
写入数据时候存入内存,后台异步存到数据库
文档型模式,数据集中在硬盘一块,而硬盘随机读写定位最浪费时间
缺点
有限的查询功能
数据库
集合
文档
MongoDB应用场景
适合
网站实时插入、更新和查询
由于性能高,可以作为缓存
大尺寸、海量、不是特别重要的数据存储
分布式存储
不适合
高度事务,比如银行
重要性数据
操作
import pymongo

#1.创建客户端
#格式:client = pymongo.MongoClient(主机地址,端口号) 默认端口号为27017
client = pymongo.MongoClient(‘localhost’)

#2.创建数据库

格式:client[‘数据库名’]

db = client[‘test0502’]

#3.创建表(如果这个表已经存在了)
#格式:数据库名[‘表名’]
table = db[‘users’]

#4.插入数据

(1)插入单条数据

#格式:表名.insert(数据)

table.insert({‘name’:‘刘’,‘age’:19})

table.insert({‘name’:‘陈诚’,‘age’:29})

#(2)插入多条数据

格式:表名.insert_many(数据列表)

user1= {‘name’:‘莫万发’,‘age’:9}

user2= {‘name’:‘高飞’,‘age’:18}

user3= {‘name’:‘晓东’,‘age’:40}

table.insert_many([user1,user2,user3])

#5.查找
#(1)简单查找
#格式:表名.find(条件)

users = table.find({‘age’:19})# select * from users where age=19

for user in users:

print(user)

#(2)高级查找
‘’’
(>) 大于 - $gt greater than
(<) 小于 - $lt less than
(>=) 大于等于 - $gte
(<= ) 小于等于 - $lte
‘’’

users = table.find({‘age’:{"$lte":19}})

for user in users:

print(user)

#其它属性
#表里的总数据条数
print(table.count())

table.find_one()不带条件返回第一条数据
table.find_one({“name”:“zhangsan”})带条件返回制定的数据

table.find()不带条件返回第一条数据
table.find({“name”:“zhangsan”})带条件返回制定的数据
和find_one不同的是。find返回的是一个对象,可以迭代。

table.find().sort(“key1”) # 默认为升序
table.find().sort(“key1”, pymongo.ASCENDING) # 升序
table.find().sort(“key1”, pymongo.DESCENDING) # 降序


mongodb导出成表格命令:
Mongoexport –d 库名 –c 表名 –-type=csv –f 字段1,字段2,字段3 -o xiapi.csv
安装
Treasure/MongoDb/

mongodb