MongoDB
2016-10-17 11:48:30 0 举报
AI智能生成
MongoDB是一个开源的、面向文档的NoSQL数据库,它使用BSON(类似JSON)格式存储数据。MongoDB的设计目标是提供一个高性能、高可用性和可扩展性的平台,适用于各种规模的应用程序。与传统的关系型数据库相比,MongoDB具有更灵活的数据模型和更好的水平扩展能力。通过使用分片技术,MongoDB可以轻松地在多个服务器上存储和管理数据,从而实现数据的高可用性和负载均衡。此外,MongoDB还提供了丰富的查询和分析功能,支持多种编程语言和开发框架。总之,MongoDB是一个强大且易于使用的数据库解决方案,适用于各种类型的应用程序。
作者其他创作
大纲/内容
nosql
not only sql
关系型数据库
ACID原则
Atomicity原子性
事物操作要么做完,要么不做
Consistency一致性
子主题
Isolation独立性
并发的事务之间不会相互影响
Durability持久性
非关系型数据库
分布式文件存储
概念
数据库database
集合collection
文档document
域field
索引index
主键primary key
自动将_id字段设为主键
db
mongodb
启动
mongo
连接
show dbs
显示所有db
db.shutdownServer()
关闭
先use admin
show tables
展示集合
db.col.drop()
db
显示当前db名
db名小写
use db
切换db,若该db不存在,新建该db
db.dropDatabase()
删除当前db
db.collection.drop()
删除集合
Capped collections
固定大小的集合
适合日志
用户
新建用户
db.createUser({user:"admin", pwd:"admin", roles:[{role:"userAdminAnyDatabase", db:"admin"}]})
用户验证
db.auth("admin","admin")
show users
db.getUsers()
db.getUser('user')
db.changeUserPassword('user', 'newPassword')
db.updateUser("user", {roles:[{role:"", db:""}]})
collection
db.collection.insert({})
插入文档
db.collection.find()
查询文档
query
$gt
>
$it
<
$gte
>=
$ite
<=
$type
Double
1
String
2
Object
3
Array
4
...
limit
skip
sort({KEY:1})
1
升
-1
降
db.collection.find().limit(NUMBER).skip(NUMBER)
db.collection.find().sort({key: 1})
db.collection.update()
更新文档
db.collection.save()
替换整个文档
db.collection.remove(<query>)
删除文档
db.collection.ensureIndex()
创建索引
db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
聚合
管道操作
$project
$match
$limit
$skip
$unwind
$group
$sort
$geoNear
$sum
$avg
$min
$max
$push
$first
$last
#addToSet
复制
先关闭
mongod --port 27017 --dbpath '/data/re0' --replSet re0
以replSet参数启动
rs.initiate()
启动新副本集
rs.add(HOST_NAME:PORT)
把从节点添加给主节点
一主(一)多从
主节点记录操作,从节点定期轮询主节点获取操作,然后对数据副本操作
从节点会在主节点宕机后接替主节点
分片
Query Routers
客户端查询接入
Config server
ClusterMetadata
mongod实例
Shard
实际数据
备份
mongodump -h dbhost -d dbname -o dbdirectory
mongorestore -h dbhost -d dbname --directoryperdb dbdirectory
监控
mongostat
状态检测
mongotop
跟踪一个实例
关系
嵌入
对象
引用
id
手动
DBRefs
$ref
集合名称
$id
$db
覆盖索引查询
db.col.ensureIndex()
查询分析
explain()
hint()强迫使用置顶索引
原子操作
固定集合
环形队列
GridFS
分片存储大文件
正则
db.col.find({text:{$regex:"ll"}})
全文索引
db.col.find({$text:{$search:"ll"}})
mapReduce
db.collection.mapReduce
ObjectId
getTimestamp
创建时间戳
索引
存储在ram,超过内存会删除部分索引
很少读取的话建议不用
自动增长
子主题
0 条评论
下一页