MongoDB知识点:
概念:
1、 集合(表)
2、 文档(记录,一条数据)
和MySQL对比图:
MonoDB 关系型数据库
Database Batabase
Collection Table
Documention Row/Recod
Field Column
MongoDB的优势:
1、 结构简单 json
2、 容易扩展 属性随便加
MongoDB的数据类型: String, Integer, Doubler, Boolean, Object, Object ID, Datetime, Code
为啥存在Code数据內型: Code数据类型用于文档存储JavaScript代码
ObjectId组成部分: 时间戳、客户端ID、客户进程ID、三个字节计数器
MongoDB索引设计原理: MongoDB没有设计索引时,必须通过扫库操作,使用db.collection.createIndex()在集合中创建一个索引
名字空间(namespace)是什么: 数据库名和collect以点连接的位置,称为命名空间
语法操作:
1、创建数据库:
use Database_name # 如果数据库没有,则创建,如果存在则跳转
show dbs # 显示所有的数据库 注意: 刚开始创建的数据库无法查看,必须添加一条新的数据,如果没有表则存放在test数据库中
db.dropDatabase() # 切换到数据库中, 然后直接删除操作。
2、 创建集合
db.createCollection("xxx") # 在数据库中创建集合, 在MongoDB中不需要显示的创建集合,可以通过db.like.insert({"aa":"bbb"})隐式的创建集合
show collections # 查询所有的集合
db.collection.drop() # 删除集合
3、插入文档(数据)
db.collection.insert({"name":"qw", "sex": 1})
4、更新文档(数据) ====update(), save()
# 如果不存在,是否执行插入操作 默认只会更新第一条数据,改为True查出所有更新
db.collection.update(条件, 更新语句, {upsert: True, multi: True})
db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})
db.col.save({"_id": ObjectId("xxxxxx"), "title": "aaa"}) # 必须填_id字段才会更新记录,否则执行插入的操作
5、删除文档
# 是否只删除一行代码,默认全部删除,
db.collection.remove(条件,{justOne: <boolean>,writeConcern: <document>})
# 官方推荐
db.collection.deleteMany({"status":0}) # 删除多个
db.collection.deletOne({"status":0}) # 删除多行
6、查询
db.collection.find().pretty() # 格式化显示文档
小于: $lt 小于等于: $lt 大于:$gt 大于等于$gte 不等于:$ne
$or[{"name": 11}, {"age": 22}]
db.col.find({$or:[{"by":"菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
7、skip() 和 limit() 和 sort()
skip() 跳过多少条数据
limit() 读取指定条数据
sort({"age": -1}) 排序, 1正序,2倒序
8、索引:
db.collection.createIndex({"age": 1})
db.col.getIndexes() # 查看集合索引
9、聚合: 主要进行数据的平均值求和等相关操作
db.collection.aggregate($group: {_id: "$by_user", num_tutorial: {$sum: 1}})