MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。java
本文档基于MongoDB3.0.6的版本linux
官网下载
若是下不了,能够去百度网盘 下载 ,提取码ikkagit
# 设置MongoDB端口
port=10008
# 设置数据存储目录路径
dbpath=/data/db/
# 设置日志路径
logpath=/data/log/mongodb.log
# 日志文件是否追加
logappend=true
复制代码
#!/bin/sh
#
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
# ### BEGIN INIT INFO
# Short-Description: mongodb
# Description: mongo db server
### END INIT INFO
# 将该路径设置为mongoDB安装路径
PROGRAM=<mongodb-install-directory\>/bin/mongod
MONGOPID=`ps -ef | grep 'mongod' | grep -v grep | awk '{print $2}'`
test -x $PROGRAM || exit 0
case "$1" in
start)
ulimit -n 3000
echo "Starting MongoDB server"
# 将该路径设置为mongoDB安装路径
$PROGRAM --fork --quiet -f <mongodb-install-directory\>/mongodb.conf
echo "Started MongoDB server"
;;
stop)
echo "Stopping MongoDB server"
if [ ! -z "$MONGOPID" ]; then
kill -15 $MONGOPID
fi
echo "Stopped MongoDB server"
;;
status)
;;
*)
echo "Usage: mongodb {start|stop|status}"
exit 1
esac
exit 0
复制代码
chmod +x /etc/init.d/mongodb
chkconfig --add mongodb
chkconfig mongodb on
复制代码
在mongoDB安装目录/bin下,执行./mongo便可打开mongoDB客户端shell,同时也能够下载图形客户端,这个网上搜索有不少,我使用的是Studio 3T。MongoDB默认链接的数据库是testgithub
为了方便理解,咱们拿SQL中的概念来作对比正则表达式
SQL概念 | MongoDB概念 | 说明 |
---|---|---|
database | database | 数据库 |
table | collection(集合) | 表 |
row | document(文档) | 行 |
column | field(字段) | 列 |
index | index | 索引 |
table joins | 不支持,只能嵌入 | 表链接 |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
MongoDB数据类型spring
数据类型 | 说明 |
---|---|
String | 字符串 |
Integer | 整型 |
Boolean | 布尔值 |
Double | 双精度浮点值 |
Min/Max keys | 将一个值与BSON元素的最低值和最高值相对比 |
Array | 用于将数组或列表或多个值存储为一个键 |
Timestamp | 时间戳 |
Object | 内嵌文档 |
Null | 空值 |
Symbol | 符号 |
Date | 日期时间 |
Object ID | 对象ID |
Binary Data | 二进制数据 |
Code | 代码类型 |
Regular expression | 正则表达式类型 |
字段 | 类型 | 说明 |
---|---|---|
capped | 布尔 | true-固定集合,若是为true,则必须指定size参数,当达到最大值时,会自动覆盖最先的文档 |
autoIndexId | 布尔 | false-默认,true-自动在_id字段建立索引 |
size | 数字 | 为固定集合指定一个最大值(按字节计算) |
max | 数字 | 指定固定集合中包含文档的最大数量 |
Mongodb复制集(replica set)由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点,Mongodb Driver(客户端)的全部数据都写入Primary,Secondary经过oplog来同步Primary的数据,保证主从节点数据的一致性;复制集在完成主从复制的基础上,经过心跳机制,一旦Primary节点出现宕机,则触发选举一个新的主节点,剩下的secondary节点指向新的Primary,时间应该在10-30s内完成感知Primary节点故障,实现高可用数据库集群。特色以下:mongodb
每一个节点经过优先级定义出节点的类型(标准、被动、投票) 标准节点经过对比自身数据进行选举出primary节点或者secondary节点
影响选举的因素:shell
触发选举的状况:数据库
注:当主节点辞职后,主节点将关闭自身全部的链接,避免出现客户端在从节点进行写入操做express
分片是指将数据库拆分,将其分散在不一样的机器上的过程。分片集群是一种水平扩展数据库系统性能的方法,可以将数据集分布式存储在不一样的分片上,每一个分片只保存数据集的一部分,MongoDB保证各个分片之间不会有重复的数据,全部分片保存的数据之和就是完整的数据集。分片集群将数据集分布式存储,可以将负载分摊到多个分片上,每一个分片只负责读写一部分数据,充分利用了各个shard的系统资源,提升数据库系统的吞吐量。注:在3.2版本后,分片技术必须结合复制集完成
定义:片键是文档的一个属性字段或是一个复合索引字段,一旦创建后不可改变,片键是拆分数据的关键,决定了数据在分片过程当中数据的存储位置。建立片键时,须要有一个支撑片键运行的索引。
片键的分类以下:
mongos> use 库名
mongos> db.集合名.ensureIndex({"键名":1}) ##建立索引
mongos> sh.enableSharding("库名") ##开启库的分片
mongos> sh.shardCollection("库名.集合名",{"键名":1}) ##开启集合的分片并指定片键
复制代码
mongos> use 库名
mongos> db.集合名.ensureIndex({"键名":"hashed"}) ##建立索引
mongos> sh.enableSharding("库名") ##开启库的分片
mongos> sh.shardCollection("库名.集合名",{"键名":1}) ##开启集合的分片并指定片键
复制代码
mongodump -h dbhost -d dbname -o dbdirectory:
mongorestore -h <:port> -d dbname
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
复制代码
spring:
data:
mongodb:
host: 127.0.0.1
port: 10008
database: test
复制代码
@Autowired
private MongoTemplate mongoTemplate;
复制代码
更多详情请参考项目https://github.com/xsj1987/mongodb-test
在安装目录/bin/下有两个命令能够用来监控