携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第26天,点击查看活动详情
1.写在前面
在日益扩展的数据中,查询的效率会随着数据量的变得,变得越来越慢。
很多时候,业主方又得要求查询效率得跟上,查询条件得丰富。
在mysql的sql优化上面,索引的优化,往往在几千万几亿得数据量下,变得起效甚微。
这里,我们有无可以优化得方式呢,一般得做法是用nosql这些非关系数据库,进行优化。
nosql,同时得在支持查询效率得情况下,还得支持丰富得查询,那这里:
mongodb这不就来了嘛!!!
MongoDB 是一个基于【分布式文件存储】的数据库,它属于NoSQL数据库。是非关系数据库当中功能最丰富,最像关系数据库的。
支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
既然mongodb能有这么好,这不得学一波嘛?
2.安装和常用命令
2.1安装
MongoDB 提供了 linux 各发行版本 64 位的安装包,你可以在官网下载安装包。
下载地址:官网
这里我们选择4.4.16
下载完安装包,上传到/opt, 并解压 tgz(以下演示的是 64 位 Linux上的安装) 。
tar -xf mongodb-linux-x86_64-amazon-4.4.16.tgz # 解压
mv mongodb-linux-x86_64-amazon-4.4.16 mongodb # 重命名
创建data和logs文件夹
cd mongodb
mkdir -p /data
mkdir -p /logs
配置环境变量(可以不配置):
vi /etc/profile # 编辑
export PATH=$JAVA_HOME/bin:/opt/mongodb/bin:$PATH # 文件最后面添加这行
source /etc/profile # 让配置生效
2.2启动
创建mongodb.cfg配置文件
cd /opt/mongodb
vi mongodb.cfg
配置文件添加下面内容
#数据库文件位置
dbpath=/opt/mongodb/data
#日志文件位置
logpath=/opt/mongodb/logs/mongodb.log
# 以追加方式写入日志
logappend=true
# 是否以守护进程方式运行
fork=true
#绑定客户端访问的ip 0.0.0.0 不绑定ip
bind_ip=127.0.0.1
# 默认 27017
port= 27017
通过配置文件方式启动:
mongod -f /opt/mongodb/mongodb.cfg
-f 指定启动的配置文件
好了,mongodb这就启动成功了!!!
2.3连接客户端
接下来,我们就开始通过客户端连接上mongodb,进行实操一波吧!!!
mongo 127.0.0.1:27017
2.4常用客户端
- 自带命令行客户端
- nosqlbooster4mongo
- NoSQL Manager for MongoDB
- Navicat for mongodb
- MongoVUE
2.5常用命令
实操,开始了!!!
2.5.1创建数据库
2.5.1.1语法
MongoDB 创建数据库的语法格式如下:
use DATABASE_NAME
使用上面的命令,如果数据库不存在,则创建数据库,否则切换到该数据库。
2.5.1.2实例
下面,我们来创建数据库 llsydn:
> use llsydn
switched to db llsydn
> db
llsydn
如果你想查看所有数据库,可以使用 show dbs 命令:
> show dbs
这里说明下:如果llsydn数据库没有数据,上面的命令,是查不出来llsydn的。
我们需要向 llsydn 数据库插入一些数据,才能显示出来。
插入一些数据到llsydn
> use llsydn
switched to db llsydn
>db.createCollection("lls")
{ "ok" : 1 }
> db.lls.insert({"name":"llsydn"})
WriteResult({ "nInserted" : 1 })
> show dbs
llsydn 0.078GB
2.5.2删除数据库
2.5.2.1语法
MongoDB 删除数据库的语法格式如下:
db.dropDatabase()
删除当前数据库,你可以使用 db 命令查看当前数据库名。所以在删除前,需要用use命令,切换到该数据库,再进行删除。
2.5.2.2实例
实操:我们删除数据库 llsydn。
接下来我们切换到数据库 llsydn:
> use llsydn
switched to db llsydn
执行删除命令:
> db.dropDatabase()
{ "dropped" : "llsydn", "ok" : 1 }
2.5.3创建集合
这里使用 createCollection() 方法来创建集合。
2.5.3.1语法
语法格式:
db.createCollection(name, options)
参数说明:
- name: 要创建的集合名称
- options: 可选参数, 指定有关内存大小及索引的选项
2.5.3.2实例
在 llsydn 数据库中创建 lls 集合:
> use llsydn
switched to db llsydn
> db.createCollection("lls")
{ "ok" : 1 }
可以看到lls 集合已经创建成功
如果要查看已有集合,可以使用 show collections 命令:
> show collections
lls
2.5.4删除集合
删除语法格式如下:
db.collection_name.drop()
上面的collection_name,需要根据实际的集合名称,进行替换
实操删除了 llsydn 数据库中的集合 lls:
> use llsydn
switched to db llsydn
> show tables
lls
> db.lls.drop()
true
2.5.5插入文档
MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:
db.collection_name.insert(document)
上面的collection_name,需要根据实际的集合名称,进行替换
实操,在 llsydn 数据库 的 lls 集合中插入数据:
>db.lls.insert({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: 'llsydn',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
或者:
>var document = {title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: 'llsydn',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
}
>db.lls.insert(document)
上面的命令,都可以使用,看你个人喜欢即可。
2.5.6删除文档
MongoDB remove()函数是用来移除集合中的数据。
在执行remove()函数前先执行find()命令来判断执行的条件是否正确,这是一个比较好的习惯。
remove() 方法的基本语法格式如下所示:
db.collection.remove(
<query>,
<justOne>
)
参数说明:
- query :(可选)删除的文档的条件。
- justOne : (可选)如果设为 true 或 1 ,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
- writeConcern :(可选)抛出异常的级别。
使用 find() 函数查询数据:
> db.lls.find()
{ "_id" : ObjectId("56066169ade2f21f36b03137"), "title" : "MongoDB 教程", "description" :
"MongoDB 是一个 Nosql 数据库", "by" : "llsydn", "tags" : ["mongodb", "database", "NoSQL" ], "likes" : 100 }
接下来我们移除 title 为 'MongoDB 教程' 的文档:
>db.lls.remove({'title':'MongoDB 教程'})
WriteResult({ "nRemoved" : 1 }) # 删除了1条数据
>db.lls.find()
...... # 没有数据
如果你想删除所有数据,可以使用以下方式(类似常规 SQL 的 truncate 命令):
>db.lls.remove({})
建议:执行find()命令来判断执行的条件是否正确(删除前)
2.5.7查询文档
MongoDB 查询数据的语法格式如下:
db.collection.find(query, projection)
- query :可选,使用查询操作符指定查询条件
- projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:
>db.lls.find().pretty()
- pretty() 方法以格式化的方式来显示所有文档。
以下实例我们查询了集合 lls 中的数据:
> db.lls.find().pretty()
{
"_id" : ObjectId("56063f17ade2f21f36b03133"),
"title" : "MongoDB 教程",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "llsydn",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
好了,以上就是MongoDB安装和常用命令一的分享了。
安装部署也不难,赶紧去试一下吧。
常用命令比较多,留着下次分享了,886
好了,个人实操可能也不够全面,班门弄斧了。
如果觉得有收获的,帮忙点赞、评论、收藏一下呗!!!