MongoDB基础
MongoDB 是一个开源、高性能、无模式的 文档型数据库,最像关系型的非关系型数据库。
1、window安装
官网下载zip后解压缩即可。可以下载compass图形界面软件连接。
启动mongodb
在安装目录的bin目录下进入cmd模式
1、命令行参数方式启动
mongod --dbpath=…\data\db
…\data\db ,是自定义数据库存储位置,为相对路径
2、配置文件方式启动【需要提前准备好配置文件】
在解压目录新建config目录,添加mongod.conf配置文件,内如参考如下:
storage:
dbPath: D:\Enviroment\mongoDB\mongodb-win32-x86_64-windows-5.0.4\data\db
启动命令:
mongod -f …/config/mongod.conf 或
mongod --config …/config/mongod.conf
(注意cmd命令模式是在bin目录下,所以这里用了相对地址)
2、linux安装
1、官网下载gaz压缩包,解压到/usr/local/mongodb目录
tart -xvf …
2、新建几个目录存储数据和日志
mkdir -p /mongodb/single/data/db
mkdir -p /mongodb/single/log
3、配置文件
vi /mongldb/single/mongod.conf
配置文件内容:
systemLog:
#MongoDB发送所有日志输出目标指定为文件
destination: file
#mongod或mongos应向器发送所有诊断日志记录信息的日志文件的路径
path: "/mongodb/single/log/mongod.log"
#当mongos或mongod实例重启时,将新条目附加到现有日志文件末尾
logAppend: true
storage:
dbPath: "/mongodb/single/data/db"
joburnal:
enabled: true
processManagement:
#启动在后台运行的mongos或mongod进程守护进程模式
fork: true
net:
#服务实例绑定的IP,默认localhost,192.168.0.3为服务器内外局域网ip
bindIp: localhost,192.168.0.3
port: 27017
# 集群使用
replication:
#副本集名称
replSetName: myrs
3、基础命令使用
1 show dbs \ show databases
列出数据库
2 use [数据库名]
切换到【】数据库,如果该数据库不存在,则隐式创建数据库
【注意】此时 show dbs ,查询不到该数据库,因为该数据库为空,数据库只创建于内存,没有写到磁盘,所以不会显示该数据库。
3 db.dropDatabase()
集合【表】
1 db.creatCollection(“name”) 创建集合
2 show collection 显示集合
3 db.collectionname.insert({“title”:“one”,“num”: 1}) // 集合不存在时,隐式创建集合,再给集合添加文档数据
查询
1、db.[name].find() 查询所有文档
2、db.[].find({“title”:“one”}) 条件查询,title为one的数据
3、db.[].findOne(…) 查询一条数据
4、db.[name].insertMany([])** 多条数据同时**插入
【注意】批量插入数据时,出错后不会回滚,可以用try…catch… ,捕获出错的数据
try{
db.[].insertMany([{},{}]);
} catch(e){
print(e);
}
{“id”:1,title:“one”,num:10}
修改
1 文档更新
db.[].update({{id:“1”},{title:“test”}}) # 直接替换更新,其他没修改的数据也将给覆盖
覆盖后的数据为{“id”:1,title:“test”}
2 局部更新 KaTeX parse error: Expected '}', got 'EOF' at end of input: …date({id:"1"},{set:{title:“set”}}) 只改动有点部分的数据
更新后{“id”:1,title:“set”,num:10}
【注意】默认只修改查询到的第一条数据,如果需要查询所有符合条件的数据需要加上参数multi:true
例:
db.[].update({"num":10},{$set:{title:"set"},{multi:true})
3 自增
db.name.update(
{
id: 3
},
{
$inc: {likenum:NumberInt(1)}
}
)
# 点赞人数+1
删除
db.name.remove(条件)
db.name.remove({}) # 空条件,删除所有
4进阶
分页、统计、比较查询、包含查询、条件查询、排序查询
索引
分片
路由、配置、分片数据库