Strava

mongodb安装和基本操作

七八个月前学的mongodb,最近用着发现自己又有点遗忘了,特意去翻了翻以前的笔记,写在一个小本本上

 

这翻着翻着就不得劲儿了,本子太小了,字儿也让我自己一阵感动😹,还是在园子里重新小结复习一下。

所用操作都是基于Mac下的

 

一.下载安装

1.安装包安装

官网:下载地址:https://www.mongodb.com/download-center#community

自行选择版本

(我是通过下面的方式,所以就主要讲后者)

 

2.homebrew安装

先可以查找有哪些版本

brew search mongodb-community

选择一个稳定版,不要下最新的

brew install mongodb-community@4.4 #我这里随便选了个版本,@ 符号后面的 4.2是版本号

 

3.添加环境变量

待到安装完毕查看 bash_profile 文件,同时找到你的mongo执行的bin路径

export PATH=${PATH}:/usr/local/opt/mongodb-community@4.2/bin

这样一来,进入mongo的shell或者查看信息就不用输入一大段命令了

 

二.运行MongoDB

我们可以使用 brew 命令或 mongod 命令来启动服务。

1.brew 启动:

brew services start mongodb-community@4.2

 

2.brew 停止:

brew services stop mongodb-community@4.2

 

3.mongod 命令后台进程方式:

mongod --config /usr/local/etc/mongod.conf --fork

 

mongod方式启动要关闭可以进入 mongo shell 控制台来实现:

>use admin;
> db.adminCommand({ "shutdown" : 1 });

如果你的关闭实在出了问题,情急之下可以在terminal直接杀死进程关闭:

killall mongod

 

注意;一定要规范关闭服务,不然下次很容易出错

 

三.基本概念

讲的很齐全

详细介绍:https://www.runoob.com/mongodb/mongodb-databases-documents-collections.html

 

四.基本操作

1.切换(创建)数据库

 

> use mydb

 

查看当前连接的数据库:

> db

 

查看所有的数据库:

> show dbs

 

列出的所有数据库中看不到 mydb 或者显示 mydb(empty) ,因为 mydb 为空,里面没有任何东西,MongoDB 不显示或显示 mydb(empty)。

2.销毁数据库

使用 db.dropDatabase() 销毁数据库:

> use local
 switched to db local
> db.dropDatabase()

 

再查看所有的数据库:

> show dbs

 

3.集合(collection)的创建和删除|创建集合

在数据库 mydb 中创建一个集合

> use mydb
switched to db mydb
> db.createCollection("users")

 

查看创建的集合:

> show collections

 

删除集合的方法如下:(删除 users 集合)

> show collections
> db.users.drop()

 

查看是否删除成功:

> show collections

 

4.向集合中插入数据

1 使用 insert()

插入数据时,如果 users 集合没有创建会自动创建。

> use mydb
switched to db mydb
> db.users.insert([
... { name : "jam",
... email : "jam@qq.com"
... },
... { name : "tom",
... email : "tom@qq.com"
... }
... ])

 

2 使用 save()

插入数据时,如果 users 集合没有创建会自动创建。

> use mydb2
switched to db mydb2
> db.users.save([
... { name : "jam",
... email : "jam@qq.com"
... },
... { name : "tom",
... email : "tom@qq.com"
... }
... ])

 

创建对象a,b,并分别保存

 

// 创建对象a,b

a = {name : "user1"};

b = {name : "user2"};

// 保存对象a,b

db.user.save(a);

db.user.save(b);

 

 
Mongo查看结果

注意到,我们在这之前根本没有创建过名叫myfirstdb的数据库,也没有创建过名叫user的集合,但为什么命令依然能够执行、并且得到我们预期的结果?这是因为MongoDB作为文档型数据库,它是无表结构的数据库,它不需要预先定义表结构。

正是这个特性,MongoDB拥有比关系型数据库更快的处理速度;另外,它还减少了添加字段等表结构变更所需要的开销。这样,我们就不必再去关心表结构和程序之间的一致性问题;简单来说,就是你在程序中添加一个字段时,不必考虑数据库是否有这个字段,因为MongoDB会自动为你创建。

 

5.插入一条复杂一点的记录

c = {name : "user2", card:"KK8566"};

db.user.save(c);

 

在这里,我们增加了一个字段”card”,这在之前是不存在的,

会自动为所有文档生成了一个card字段。

 

6.修改记录

上一个例子中,我们看到有两个”user2”,我们现在要把最后一个改为”user3”

db.user.update( {name:"user2", card:"KK8566"}, {$set:{name:"user3", card:"KK8566"} } );

 

 

7.删除记录

我们删除第一个文档

db.user.remove( {name : "user1" } )

 

 

8. 查询记录

列出所有记录

db.user.find();

 

 

可以看到,在上一小节我们执行的删除命令,数据库里仅剩两个文档。

使用while来批量输出

var cursor = db.user.find();

while(cursor.hasNext())    printjson( cursor.next());

 

 

转为数组

var arr = db.user.find().toArray();

arr[1];    // 显示第1个

 

事实上,我们在Node.js的服务器端操作MongoDB时,也是使用类似的方式。

 

9.条件查询

用MongoDB查询语句来实现MySQL的条件查询语句:SELECT * FROM user WHERE NAME=”user3”

db.user.find( { name : "user3" } ).forEach( printjson);
条件查询

上面的命令将会返回所有满足条件的文档,为了节省开销,还可以使用findOne()来得到满足条件的第一个文档:

db.user.findOne( { name : "user3" } );

 

限制查询结果集

在查询语句后面加上limit(num)即可


注意,这里仅仅是一个简单的条件限制。我们在实际应用中,会有很多很复杂的需求;在MySQL中,我们会使用多个AND或OR来表示与和或的关系。在MongoDB中,也有类似AND或OR的关键字,但MongoDB中,一切都是用类似Json的格式来表达的。

 

 

可视化工具推荐:NoSQLBooster for MongoDB

 

参考:https://zhuanlan.zhihu.com/p/30160849

         https://www.jianshu.com/p/8bf26effa737

 

 

 

 

 


db.user.update( {name:"user2", card:"KK8566"}, {$set:{name:"user3", card:"KK8566"} } );

posted @ 2020-11-03 21:52  cheflone  阅读(246)  评论(0编辑  收藏  举报