mongodb
MONGO优缺点:
1海量查询是mongo更快
2mongo可以存储文件
3mongo不需要定义数据结构:字段个数,字段类型【NoSQL可能更加适合初始化数据还不明确或者未定的项目中。】
4mongo可以通过集合分片实现水平扩展,应用不用关注数据是否被分散到多个机器(sql可以垂直扩展:增加CPU、内存。分库分表)
mongo不支持事务
mongo不支持join
SQL中不允许删除已经被使用的外部数据,mongo没有这种限制
sql的弊端:
1. 扩展困难:由于存在类似Join这样多表查询机制,使得数据库在扩展方面很艰难
2. 读写慢:这种情况主要发生在数据量达到一定规模时由于关系型数据库的系统逻辑非常复杂,使得其非常容易发生死锁等的并发问题,所以导致其读写速度下滑非常严重
为了进行join处理,关系型数据库不得不把数据存储在同一个服务器内,这不利于数据的分散
https://api.mongodb.com/python/current/api/bson/decimal128.html
要转换为Python的Decimal类型,请使用Decimal128.to_decimal方法
MongoClient的第一个参数host还可以直接传MongoDB的连接字符串,以mongodb开头,例如:client = MongoClient('mongodb://localhost:27017/')
pymongo 连接配有副本集的数据库 示例::
mongodb://数据库账户:数据库密码@52.83.139.139:59997,52.83.224.86:59998,52.83.138.55:59999/admin?replicaSet=rs0
pymongo接口:
插入:insert_one() insert_many()
查找:find_one() find()
更新:update_one() update_many()
删除:delete_one() delete_many()
在mygirlfriend集合中删除以 S 开头的文档数据
myquery = { "hometown": {"$regex": "^S"} }
x = collection.delete_many(myquery)
符号含义示例示例含义
$regex匹配正则{'name': {'$regex': '^M.*'}}name以M开头
$exists属性是否存在{'name': {'$exists': True}}name属性存在
$type类型判断{'age': {'$type': 'int'}}age的类型为int
$mod数字模操作{'age': {'$mod': [5, 0]}}年龄模5余0
$text文本查询{'$text': {'$search': 'Mike'}}text类型的属性中包含Mike字符串
$where高级条件查询{'$where': 'obj.fans_count == obj.follows_count'}自身粉丝数等于关注数