dbhelper.py
用户登录和注册(加密算法)
加密导包 import hashlib 或者使用Md5 加密
MongoDB —》JSON
service mysql start
service mongod start
数据库(添加,查看,删除) —》集合(创建,删除,添加数据)
查看:
show dbs; (show databases;)
使用:
use 数据库;
随意use数据库名,但是不一定数据库就会存在。只有向数据库中添加集合,数据库才会创建
创建集合:(table)
db.createCollection(‘集合名字’) ——》存在数据库
删除:
要想删除哪个数据库,就必须先use school;
然后: db.dropDatabase();
查看当前正在使用的数据库:
db
mytest
集合的操作:
> use mytest;
switched to db mytest
> db.createCollection('employee'); —设置没有上限集合
{ "ok" : 1 }
> db.createCollection('dept',{capped:true,size:12}); —设置了上限集合
{ "ok" : 1 }
> show tables; — 查看集合
dept
employee
> show collections; —查看集合
dept
employee
> db.employee.drop(); — 删除集合 db.集合名字.drop()
true
> show collections;
添加数据:
> db.dept.insert({dname:'sales',loc:'beijing'}); —》 直接添加一个文档对象
WriteResult({ "nInserted" : 1 })
> db.dept.insert({dname:'accounting',loc:'shanghai'},{dname:'research',loc:'zhengzhou'});
WriteResult({ "nInserted" : 1 })
> db.dept.find()
{ "_id" : ObjectId("5b8f521e5f29fed989e6d8c8"), "dname" : "sales", "loc" : "beijing" }
{ "_id" : ObjectId("5b8f525d5f29fed989e6d8c9"), "dname" : "accounting", "loc" : "shanghai" }
> d1={dname:'research',loc:'zhengzhou'} —》创建d1文档对象 d1={。。。。。}
{ "dname" : "research", "loc" : "zhengzhou" }
> d1.desc='aaaa' ——》 动态给d1添加新的字段
aaaa
> db.dept.insert(d1) ——》 再将整个d1insert到dept中
WriteResult({ "nInserted" : 1 })
> db.dept.find(); ——》 查询文档中的所有数据
{ "_id" : ObjectId("5b8f521e5f29fed989e6d8c8"), "dname" : "sales", "loc" : "beijing" }
{ "_id" : ObjectId("5b8f525d5f29fed989e6d8c9"), "dname" : "accounting", "loc" : "shanghai" }
{ "_id" : ObjectId("5b8f53235f29fed989e6d8ca"), "dname" : "research", "loc" : "zhengzhou", "desc" : "aaaa" }
db.aa.insert([{a:55,b:44},{a:33,b:22,c:67,d:789}]) —>批量添加
总结: 文档结构不是固定的。
删除:
格式: db.集合名称.remove({})
db.集合名称.remove({}) 清空集合中数据
db.集合名称.remove({key:value}) 有条件的删除数据
更新:
格式: db.集合名称.update(query,value,options)
db.aa.update({a:100},{a:101,b:1000}) ——> 替换原来的内容
$set: 设置值
db.aa.update({a:101},{$set:{a:102}})
$inc:
db.aa.update({a:8},{$inc:{b:10}})
保存:save() 保存修改
db.集合.save(document)
db.集合.save({a:1000,b:1000})
db.集合.insert()
var d1 = db.集合.findOne({a:22})
d1.字段=值
打印d1
db.集合.save(d1)
查询:
find() 查询所有
findOne() 获取第一条记录
limit() 获取指定的数量
skip(n) 跳过n条记录
通常可以通过limit和skip的结合完成分页操作
db.aa.find().skip(0).limit(3)
db.aa.find().skip(3).limit(3)
db.aa.find().skip(6).limit(3)
db.aa.find().skip(9).limit(3)
page count=3
总结:
db.aa.find().skip((page-1)*count).limit(3)
limit和skip换位置也是相同的结果
投影: 就是查询指定字段的值select ename,job from employee
db.集合名.find({},{字段名:1或者0}) 1 表示显示字段信息 0 表示不显示字段信息
注意:_id如果不声明,默认是显示的 _id:0 则不显示
排序:sort({字段:1或者-1})
db.aa.find().sort({a:-1}) 按照a降序排列
db.aa.find().sort({a:1}) 按照a升序排列
db.aa.find().sort({a:-1,b:-1}) 先按照a降序排列,如果a有相同的则按照b降序排列
统计数目:类似聚合函数中count(*)
count() 函数
db.aa.find().count() 统计aa集合的记录数有多少
去重:
语法: db.集合.distinct(‘去重的字段’)
db.aa.distinct('a')
强调:db.aa.find({},{a:1}).distinct(‘a’) 报错
关系查询:
> < >= <=
$gt $lt $gte $lte
db.aa.find({字段:{$gt:6}})
db.aa.find({字段:{$lt:6}})
逻辑: {$or:[{条件1},{条件2}]} 符合条件1或者符合条件2
默认是与and {a:{$gt:8},b:{$lt:10}} a>8 and b<10
范围: $in $nin
db.aa.find({a:{$in:[7,8,18]}})
总结:
find()
findOne()
pretty() 格式化
投影:指明字段
去重: distinct()
排序: sort()
分页: limit() skip()
关系: $gt $lt $ne $gte $lte
逻辑: $or 默认是and
范围: $in $nin
统计: count()