mongodb的操作
一、基本概念
mongodb是属于文档型的非关系型数据库,是开源、高性能、高可用、可扩展的
二、MySQL redis 和mongo之间的对比
MySQL | 关系型数据库,表和表之间有外键关系,列表结构可以使用复杂的查询语句 | 成本低 | 缺点:速度慢消耗io操作 |
---|
redis | key-value形式数据库,具备生命周期特性,纯内存操作 | 速度快 | 缺点:成本太高 | mongodb | key-value形式吗,是nosql非关系型数据库,一般是io操作,一般是内存操作 | 性能比mysql高但是没有redis快 | 成本比mysql高但是又比redis低 |
三、基本操作
展示所有数据库
show databases
使用或创建数据库
use databases_name(表名称);
创建表
db.createCollection("code"); # 创建code表
展示表
db.code.find();
删除表
db.code.drop();
删除表中数据
db.code.remove({'name':'admin','age':20});
添加数据
db.code.insert({name:"admin",age:20});
修改数据
db.code.update({name:"admin"},{$set:{name:"dong"}})
创建过期索引
# datetime: 创建索引所在的字段 为date形式
# expireAfterSeconds:为过期时间 表示30秒后删除数据
db.code.createIndex({"datetime":1},{expireAfterSeconds:30});
查看所有索引
db.code.getIndexes()
查看当前使用的数据库
db
删除当前使用的数据库
db.dropDatabase()
四、封装pymongo,方便项目集成
pip install pymongo
import datetime
import pymongo
import pytz
tzinfo = pytz.timezone("Asia/Shanghai")
class MyMongo:
def __init__(self):
self.client = pymongo.MongoClient(host="localhost",port=27017,tz_aware=True,tzinfo=tzinfo)
self.db = self.client.mytornado
self.table = self.db.code
def insert(self,data):
return self.table.insert_one(data)
def find(self,data):
res = self.table.find_one(data)
return res
|