一、下载MongoDB
1、官网地址:MongoDB Community Download | MongoDB
2、复制压缩包下载链接
3、在Linux中使用wget下载压缩包
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-6.0.0-rc12.tgz
4、解压mongodb压缩包
tar -zxvf mongodb-linux-x86_64-rhel70-5.0.9.tgz
5、将解压文件移动到目录 /usr/local/mongodb下
mv mongodb-linux-x86_64-rhel70-5.0.9 /usr/local/mongodb
6、新建几个目录,分别用来存储数据和日志
# 数据存储目录
mkdir -p /usr/local/mongodb/single/data/db
# 日志存储目录
mkdir -p /usr/local/mongodb/single/log
7、新建并修改配置文件
vi /usr/lcoal/mongodb/single/mongod.conf
systemLog:
# MongoDB发送所有日志文件输出到指定目标文件
destination: file
# mongod或者mongos应向其发送所有诊断日志记录信息到指定文件
path: "/usr/local/mongodb/single/log/mongod.log"
# 当mongos或者mongod实例重启时,mongos或者mongod会将新条目追加到现有日志的结尾
logAppend: true
storage:
# mongod实例存储其数据的目录。storage.dbPath 设置仅限于mongod
dbPath: "/usr/local/mongodb/single/data/db"
journal:
# 启用或者禁用持久性日志以确保数据文件保持有效和可恢复
enabled: true
processManagement:
# 启用在后台运行mongos或者mongod进行的守护进程模式
fork: true
net:
# 服务实例绑定的IP,默认是localhost
bindIp: localhost,192.168.2.128
#绑定端口,默认是27017
port: 27017
8、启动MongoDB服务
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/single/mongod.conf
二、MongoDB数据库创建及使用
1、连接mongodb数据库,进入mongodb目录下的bin目录
./mongo --host=mongodb对应IP地址
2、列数所有数据库
show dbs
3、创建数据库
use 数据库名称
备注:
- 不能是空字符串
- 不得含有''(空格)、.(点)、$、/、\和\0(空字符)
- 应全部小写
- 最多64字节
4、删除数据库
# 需要先进入当前数据库,然后执行删除命令
db.dropDatabase()
5、集合的显示创建(表)
db.createCollection("集合名称")
6、删除集合
db.集合名称.drop()
7、单个文档的插入
db.集合名称.insert(
<document or array of documents>,
{
writeConcern: <document>,
ordered: <boolean>
}
)
参数 | 类型 | 描述 |
document | document or array | 要插入到集合的文档或者文档数组(json格式) |
writeConcern | document | |
ordered | boolean | 可选。如果为真,则按顺序插入数组中的文档,如果其中也一个文档出现错误,MongoDB将返回而不处理数组中的其余文档。如果是假,则执行无序插入,如果其中一个文档出现错误,则继续处理数组中的主文档。在版本2.6+中默认无true |
例如:db.comment.insert({"articleid":"10000","content":"今天天气真好,阳光明媚","userid":"1001","nickname":"Rose","createtime":new Date(),"likenum":NumberInt(10),"state":null } )
8、多个文档插入
db.集合名称.insertMany(
[<document 1>, <document 2>,...],
{
writeConcern: <document>,
ordered: <boolean>
}
)
例如:db.comment.insertMany([{"_id":"1","articleid" : "10001", "content" : "我们不应该把清晨浪费在手机上,健康很重要,一杯温水幸福你我他.", "userid" : "1002", "nickname" : "相忘于江湖", "createtime" : new Date("2022-06-28T17:06:00.697Z"), "likenum" : NumberInt(10), "state" :"1" },{"_id":"2","articleid" : "10001", "content" : "我夏天空腹喝凉水,冬天喝温开水.", "userid" : "1005", "nickname" : "伊人憔悴", "createtime" : new Date("2022-06-28T17:06:00.697Z"), "likenum" : NumberInt(888), "state" :"1" },{"_id":"3","articleid" : "10001", "content" : "我一直喝凉开水,冬天夏天都喝.", "userid" : "1004", "nickname" : "杰克船长", "createtime" : new Date("2022-06-28T17:06:00.697Z"), "likenum" : NumberInt(666), "state" :"1" },{"_id":"4","articleid" : "10001", "content" : "专家说不能空腹吃饭,影响健康.", "userid" : "1003", "nickname" : "凯撒", "createtime" : new Date("2022-06-28T17:06:00.697Z"), "likenum" : NumberInt(2000), "state" :"1" },{"_id":"5","articleid" : "10001", "content" : "研究表明,刚烧开的水千万不能喝,因为烫嘴.", "userid" : "1003", "nickname" : "凯撒", "createtime" : new Date("2022-06-28T17:06:00.697Z"), "likenum" : NumberInt(3000), "state" :"1" }])
9、查询所有
db.集合名称.find()
或者
db.集合名称.find({})
10、有参查询
db.集合名称.find({"参数":"值"})
11、查询第一条数据
db.comment.findOne({"参数":"值"})
12、投影查询
db.comment.find({"参数:"值"},{显示列:1, 不显示列:0})
13、以_id方式覆盖更新更新
db.comment.update({_id:"1"},{likenum:NumberInt(111)})
备注:记录只会剩下_id,likenum字段,其他字段都覆盖没了
14、局部更新
db.comment.update({_id:"2"}, {$set:{likenum:NumberInt(2222)}})
15、批量更新
db.comment.update({userid:"1003"},{$set:{nickname:"张三"}}, {multi:true})
16、列值增长修改
# 给_id=3的记录对应的likenum字段增加1
db.comment.update({_id:"3"},{$inc:{likenum:NumberInt(1)}})
17、删除文档
db.comment.remove(条件)
或
db.comment.remove({}) #删除所有
# 例如:db.comment.remove({_id:"1"})
18、查询记录文档数量
db.comment.count()
或
db.comment.count(条件)
# 例如:db.comment.count({username:"张三"})
19、分页查询
# 查询前几条
db.comment.find().limit(数量)
# 查询中间
db.comment.find().limit(数量).skip(跳过前几条数据)
20、排序查询
# 排序方式 1:升序,-1:降序
db.comment.find().sort({字段名称: 排序方式, 字段名称2:排序方式,...})
21、正则查询
db.comment.find({字段名: 正则表达式})
# 例如:db.comment.find({content:/不/})
22、比较查询
# 大于
db.comment.find({字段:{$gt:value}})
# 大于等于
db.comment.find({字段:{$gte:value}})
# 等于
db.comment.find({字段:{$ne:value}})
# 小于
db.comment.find({字段:{$lt:value}})
# 小于等于
db.comment.find({字段:{$lte:value}})
23、包含与不包含查询
# 包含
db.comment.find({字段:{$in:[value1,value2,...]}})
#不包含
db.comment.find({字段:{$nin:[value1,value2,...]}})
24、条件查询
# and查询
db.comment.find({$and:[{条件1,},{条件2},...]})
# or查询
db.comment.find({$or:[{条件1,},{条件2},...]})
三、MongoDB索引
1、查询索引
db.comment.getIndexes()
2、创建索引
db.comment.createIndex(keys,options)
参数 | 类型 | 描述 |
keys | document | 包含字段和值对的文档,其中字段是索引键,值描述该字段的索引类型。对于字段上的升序索引,请指定值1;对于降序索引,请指定值-1。比如:{字段:1或者-1},其中1表示指定按升序创建索引,如果你想按降序来创建索引指定为-1即可。另外MongoDB支持几种不同的索引类型,包括文本、地理空间和哈希索引。 |
options | document | 可选。包含一组控制索引创建的选项文档。有关详细信息,如下表 |
Options参数
3、单字段索引
# 按字段userid升序索引
db.comment.createIndex({userid:1})
4、创建符合索引
db.comment.createIndex({字段1:排序方式,字段2:排序方式,...})
5、删除索引
db.comment.dropIndex({字段:排序方式})
或
db.comment.dropIndex(索引名称)
6、删除所有索引
db.comment.dropIndexes()
四、执行计划
1、使用执行计划
db.comment.find({字段:值}).explain()