MongoDB基本使用

一、MongoDB介绍

MongoDB是一个NoSQL数据库,它是跨平台的,基于分布式文件存储的数据库,由C++语言编写的(这点很重要,则表示在Linux下需要安装gcc环境)。MongoDB是以文档的形式存储数据,数据结构由键值(key:value)对组成,类似JSON。

​ MongoDB结构,最小的单位为文档(类似MySQL的行),每一个文档用的是BSON形式来存储(类似JSON),文档的上一层为集合(类似MySQL的表),再上一级为库(类似MySQL的数据库)。

img

img

二、MongoDB启动

1.参数说明

参数 描述
–bind_ip 绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定,默认本地所有IP
–logpath 指定MongoDB日志文件
–logappend 使用追加方式书写日志
–dbpath 指定数据库路径
–port 指定服务端口号,默认为27017
–serviceName 指定服务名
–serviceDisplayName 指定服务名(在多个MongoDB服务时执行)
–install 指定作为一个Windows服务安装

2.启动MongoDB服务器的方式

2.1进入MongoDB目录的bin目录中执行mongod.exe文件(命令行)

在执行命令前,先在F盘目录下创建/data/db

img

进入cmd控制台,进入mongodb的安装bin目录,执行命令

cd C:\Program Files\MongoDB\Server\4.0\bin mongod.exe --dbpath f:\data\db

img

启动成功后,会在指定的目录下生成数据库文件信息

img

2.2将MongoDB服务器作为Windows服务来运行

cd C:\Program Files\MongoDB\Server\4.0\bin  mongod.exe --bind_ip 127.0.0.1 --logpath "f:\data\log\mongodb.log" --logappend --dbpath "f:\data\db" --port 27017 --serviceName "demo" --serviceDisplayName "demo" --install

在执行命令前需要创建对应的目录结构

img

进入cmd,执行命令(一定要以管理员的身份运行cmd控制台)

img

查看指定的mongodb的日志文件(即–logpath 指定的路径)

img

看日志文件,需要在命令行用[net start demo],启动mongodb

img

自动生成数据库的文件信息在F:/data/db

img

进程里mongod正在运行,如下图

img

2.3 bin文件下的exe文件功能

mongod.exe:启动MongoDB服务器

mongo.exe:启动MongoDB Shell

3.SQL术语和MongoDB术语比较

SQL术语 MongoDB术语 说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins 表连接(MongoDB不支持)
primary key primary key 主键(MongoDB自动将_id字段设置为主键)

三、基本命令学习

1.db命令:查看当前操作的文档(数据库)

img

img

2.show dbs命令:显示所有数据的列表

img

3.use命令:连接到一个指定的数据库(如果数据库不存在创建数据库,否则打开该数据库。)

img

4.删除数据库:db.dropDatabase()

查看当前数据库为test1; 删除当前数据库;查看已有数据库内该数据库已经被删除成功。

img

5、从指定主机上克隆数据库

db.cloneDatabase(“127.0.0.1”); 将指定机器上的数据库的数据克隆到当前数据库

6、从指定的机器上复制指定数据库数据到某个数据库

db.copyDatabase(“mydb”, “temp”, “127.0.0.1”);将本机的mydb的数据复制到temp数据库中

7、修复当前数据库

db.repairDatabase();

img

8、查看当前使用的数据库

db.getName();

db; db和getName方法是一样的效果,都可以查询当前使用的数据库

img

9、显示当前db状态

db.stats();

img

10、当前db版本

db.version();

img

11、查看当前db的链接机器地址

db.getMongo();

img

按照上面的安装完成后,就可以使用MongDB了,操作的指令都是一样的,我自己使用的是Linux,所以下面都以Linux为例。

​ 找到你安装MongDB目录,如果不知道,可以通过ps -ef | grep mongo 来查看mongodb所在的位置,在Linux下,MonggoDB是随着Linux一起启动的。如果你不小心关闭了,可以通过命令service mongodb start来启动服务(注意,此处的启动服务不是使用MongDB),通过命令 service mongodb stop关闭服务。

​ 下面才是真正的使用MongoDB,上面已经教了怎么查找mongpdb的位置,找到位置之后呢,通过命令 ./mongo 进入到MongoDB的真正服务中,也就是到了此处才是真正的使用MongoDB。

​ 总结一波:

pe -ef | grep mongodb  查看mongodb的目录和看是否启动
service mongodb start  
启动mongodb服务
service mongodb stop   
关闭mongodb服务
./mongo  真正使用mongodb服务

​ 在mongodb中,我们就要学习mongodb 的指令了,类似于学习sql一样,注意:在MongoDB中,是区分大小写的,要特别注意这一点。

12、 先从库级别的指令开始:

> show dbs;             
查看数据库,会显示当前的数据库,以及占用的内存大小。local   0.078125GB  
注意:该命令不会显示空的数据库,也就是说你新建的数据库没数据是不会显示的。 
> db       
查看当前用户连接的是哪个库,没错就是这2个字符。test
> use xuye            
创建一个库,名为xuyeswitched to db xuye 
> use xuye            
注意上面我们db查看当前库是test,现在我们切换到xuye这个库了。
switched to db xuye    
use的命令有两个作用,一个是切换库,如果这个库不存在就是创建库。
> db     查看当前连接的库,此时使用的是xuye这个库。xuye 
> db.dropDatabase()    删除当前连接的数据库,类似对对象调用方法的操作,db表示当前的用户{
    "dropped" : "xuye", "ok" : 1 }        
>dropDatabase()函数表示执行删除操作,下面的是返回值。 
> show users      显示当前用户,没有数据则不显示

13、 集合(类似MySQL的表级别)级别的指令:

​ 需要注意的是,在集合中,可以随意存储任何想干或者不想干的数据,并不像关系型数据库中已经定死了这个列必须是什么值,必须按照这个格式,如果现在不理解,待会看下面。

> db.createCollection("user",{size:20,capped:true,autolndexld:true,max:50}) { "ok" : 1 }在当前库下创建了一个集合,该集合自动添加索引,并且该集合为固定长度,20字节,集合中最多包包含50个文档。

​ db.createCollection(name,option),其中option是一个json格式,可选参数以及信息如下。

img

14、 一些集合级别的其它操作

> db.getCollectionNames()[ "system.indexes", "user" ]
> show collectionssystem.indexesuser 
两个指令都是获得到当前库下的所有集合名。 
> db.getCollection("user")   
获得到单个的集合信息xuye.user                    
> db.printCollectionStats(); 
会显示当前库下集合的创建信息,例如MySQL的查看表设置的信息。user{
           "ns" : "xuye.user",        "count" : 0,        "size" : 0,        "storageSize" : 4096,        "numExtents" : 1,        "nindexes" : 1,        "lastExtentSize" : 4096,        "paddingFactor" : 1,        "systemFlags" : 1,        "userFlags" : 0,        "totalIndexSize" : 8176,        "indexSizes" : {
                   "_id_" : 8176        },        "capped" : true,        "max" : 50,        "ok" : 1} 
> db.user.drop()          
删除当前库下的user集合。true 

15、 文档级别的操作指令:

> db.student.insert({
   "name":"xuye","school":"hafo","numbe":141420014})  
插入一条文档,我并没有创建集合student,直接写插入语句,如果表不存在会自动创建(一般都是使用此方式来建表,而不是去用createColletion()创建表,此方式的容量会自动增长。) 
> db.student.insert({
   "class":101,"number":1401420,"teach":"xuye"})
在插入一条文档,可以发现,两条文档之间的格式要求是没有任何关系的,甚至你可以随便插入不是关于学生此类的信息都可以,但是一般一个表只插入一类信息的文档(约定成俗的)。  
> db.student.find()      
查看该集合中所有的文档。{
    "_id" : ObjectId("5b7d1aa979c725e3580ed2db") }{
    "_id" : ObjectId("5b7d1b1d79c725e3580ed2dc"), "name" : "xuye", "school" : "hafo", "numbe" : 141420014 }{
    "_id" : ObjectId("5b7d1c57c8ff91d6ecaf79d8"), "class" : 101, "number" : 1401420, "teach" : "xuye" }
此处还需要注意,我们并没有插入_id这个东西,这是mongodb自动帮我们生成的一个id,是唯一的,所以也就不需要我们去生成id了。 
> db.student.find().pretty(){
    "_id" : ObjectId("5b7d1aa979c725e3580ed2db") }{
           "_id" : ObjectId("5b7d1b1d79c725e3580ed2dc"),        "name" : "xuye",        "school" : "hafo",        "numbe" : 141420014} 
格式化显示查询的语句,应该还有几条,我只取了其中一条粘贴在这里,就类似代码的格式化,好看一些。 
> db.student.insert({
   "name":"xuye","number":140246,"deskmate":{
   "name":"xiaobai","number":140265}})
插入一条复杂一些的文档,可以嵌套,和json一样,只要符合键值对的形式都可以使用。如果多个嵌套的话,要使用中括号,如下。 
db.student.insert({
   "name":"xuye","number":140246,"deskmate":[{
   "name":"xiaobai","number":140265},{
   "name":"xiaohei","
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值