01-mongodb快速入门

MongoDB

一、下载与安装

https://www.mongodb.com/try/download

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

1.安装:

在这里插入图片描述

安装失败,那就换一种方式安装,重新下载zip包,然后解压,解压后创建data,logs两个目录。

在这里插入图片描述

data:保存数据库文件

logs:保存日志文件

2.新建mongo.conf文件

在这里插入图片描述

设置如下配置:

# 数据库文件路径
dbpath=D:\mongodb\data
# 日志文件
logpath=D:\mongodb\logs\mongo.log
# 日志采用追加模式,配置后mongodb日志会追加到现有的日志文件,不会重新创建一个新文件
logappend=true
# 启用日志文件,默认启用
journal=true
# 这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为 false
quiet=true
# 端口号 默认为 27017
port=27017

3.启动mongodb

在bin目录下,使用cmd中输入如下命令:

mongod --config D:\mongodb\mongo.conf

在这里插入图片描述

光标闪动,接着data和logs生成如下文件。

在这里插入图片描述
在这里插入图片描述

4.验证

在浏览器输入如下地址:

http://localhost:27017/

在这里插入图片描述

5.连接

在bin文件夹内新开一个命令窗口输入:mongo
在这里插入图片描述

以上就下载完,并安装启动,但是启动是一次性的,可以注册为windows的系统服务。

具体可参考:https://blog.csdn.net/bbc2005/article/details/87900841

6.配置环境变量

上述启动只能在bin目录下才能使用,配置环境变量可以在其他地方使用,将mongodb的bin路径配置到path下。

二、安装mongodb的客户端工具

下载:https://robomongo.org/download

解压:

在这里插入图片描述

双击运行:

在这里插入图片描述

创建连接:

在这里插入图片描述

三、快速入门

1.简介

MongoDB是用C++语言编写的非关系型数据库。特点是高性能、易部署、易使用,存储数据十分方便,主要特性有:

  • 面向集合存储,易于存储对象类型的数据
  • 模式自由
  • 支持动态查询
  • 支持完全索引,包含内部对象
  • 支持复制和故障恢复
  • 使用高效的二进制数据存储,包括大型对象
  • 文件存储格式为BSON(一种JSON的扩展)

2.Mongodb与关系型数据库的对比

在这里插入图片描述

  • 文档(document)是MongoDB中数据的基本单元,非常类似于关系型数据库系统中的行(但是比行要复杂的多)。
  • 集合(collection)就是一组文档,如果说MongoDB中的文档类似于关系型数据库中的行,那么集合就如同表。
  • MongoDB的单个计算机可以容纳多个独立的数据库,每一个数据库都有自己的集合和权限。
  • MongoDB自带简洁但功能强大的JavaScript shell,这个工具对于管理MongoDB实例和操作数据作用非常大。
  • 每一个文档都有一个特殊的键”_id”,它在文档所处的集合中是唯一的,相当于关系数据库中的表的主键。

3.mongodb的数据类型

在这里插入图片描述

四、mongodb的命令操作

4.1 数据库的操作

1、创建数据库

use 数据库名            //如果数据库不存在,则创建数据库,否则切换到指定数据库。

2、显示所有数据库

show dbs

注意:

  1. 使用use创建数据库后,再使用show dbs没有显示刚刚创建的数据库,需要向数据库中插入一条数据,才会显示。
  2. mongodb默认使用的数据库为test,如果不指定数据库,则默认使用test。
  3. mongodb的集合创建,只有在插入一条文档数据之后,才会创建。

3、删除数据库

db.dropDatabase()  		//删除数据库需要将数据库切换到当前数据库,并执行此命令
4.2 集合的操作

1、创建集合

db.createCollection(name, options)
  • name: 要创建的集合名称

  • options: 【可选参数】, 指定有关内存大小及索引的选项

在这里插入图片描述

在插入文档时,MongoDB 首先检查固定集合的 size 字段,然后检查 max 字段。

-- 不带options参数创建集合,例子:
use test	//切换到test数据库
db.createCollection("myCollect")	//创建一个名称为myCollect的集合
show collections 或者 show tables		//显示所有集合

-- 带options参数创建集合,例子:
创建固定集合 mycol,整个集合空间大小 6142800 B, 文档最大个数为 10000 个。
db.createCollection("mycol", {capped:true, autoIndexId:true, size:6142800, max:10000})

上述是手动创建一个空的集合,也可以在创建集合的同时插入文档数据。
db.mycol2.insert({"name" : "菜鸟教程"})

2、删除集合

db.集合名称.drop()			如:db.mycol2.drop()
4.3 文档的操作

文档的数据结构和 JSON 基本一样。

所有存储在集合中的数据都是 BSON 格式。

BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。

1、插入文档

db.集合名称.insert({"_id":1, name":"linging"})
或者
db.集合名称.save({"_id":2, name":"linging"})    

//_id为主键,固定,如果没指定主键,则是ObjectId("61aadcbff74a155382b5a3b2")
  • save():如果 _id 主键存在则更新数据,如果不存在就插入数据。该方法新版本中已废弃,可以使用 db.collection.insertOne()db.collection.replaceOne() 来代替。
  • insert(): 若插入的数据主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常,提示主键重复,不保存当前数据。

插入一个文档:

db.collection.insertOne(
   <document>,
   {
      writeConcern: <document>
   }
)
如:
db.myCollect.insertOne({"_id":2,"name":"linging"})

插入多个文档:

db.collection.insertMany(
   [ <document 1> , <document 2>, ... ],
   {
      writeConcern: <document>,
      ordered: <boolean>
   }
)
如:
db.myCollect.insertMany([{"_id":3, "name":"linging3"},{"_id":4, "name":"linging4"}])

参数说明:

  • document:要写入的文档。
  • writeConcern:写入策略,默认为 1,即要求确认写操作,0 是不要求。可选,抛出异常的级别。
  • ordered:指定是否按顺序写入,默认 true,按顺序写入。

2、更新文档

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)

参数说明:

  • query : update的查询条件,类似sql update查询内where后面的。
  • update : update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set后面的
  • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
  • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  • writeConcern :可选,抛出异常的级别。

例如:

// 插入一个文档
db.myCollect.insert({
    title: 'MongoDB 教程', 
    description: 'MongoDB 是一个 Nosql 数据库',
    by: '菜鸟教程',
    url: 'http://www.runoob.com',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
})
// 更新文档
db.myCollect.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})

// 默认multi为false,只会修改查找到的第一条记录,修改为true,会更新查询到的所有记录db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})

// 更多例子:
只更新第一条记录:
db.myCollect.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
全部更新:
db.myCollect.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
只添加第一条:
db.myCollect.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );
全部添加进去:
db.myCollect.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );
全部更新:
db.myCollect.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );
只更新第一条记录:
db.myCollect.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

3、删除文档

db.collection.remove(
   <query>,
   <justOne>
)

如果你的 MongoDB 是 2.6 版本以后的,语法格式如下:
db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)

// 删除所有数据
db.collection.remove({})

//remove过时的替换方法
deleteOne() 和 deleteMany() 

参数说明:

  • query :(可选)删除的文档的条件。
  • justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
  • writeConcern :(可选)抛出异常的级别。
如:
db.myCollect.remove({"name":"linging"},{justOne:false})

4、查询文档

db.collection.find(query, projection)
  • query :可选,使用查询操作符指定查询条件
  • projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

以易读的方式来查询文档(格式化文档):

db.collection.find().pretty()

查询一个文档:

db.collection.findOne(query)

mongodb与rebms的where使用:

条件操作符:

在这里插入图片描述

100 < count < 200
db.collection.find({"count":{$gt:100,$lt:200}})

and条件:

db.collection.find({key1:value1, key2:value2})   //使用逗号隔开,就是and查询

or条件:

db.collection.find(
   {
      $or: [
         {key1: value1}, {key2:value2}
      ]
   }
)

and与or条件一起使用:

db.collection.find(
   {
      key1:value1,
      $or: [
         {key1: value1}, {key2:value2}
      ]
   }
)

5、$type操作符

在使用find进行查询时,可以指定某个条件查询的类型。

db.col.find({"title" : {$type : 2}})
或
db.col.find({"title" : {$type : 'string'}})

// 指定查询的title条件的值为字符串的结果

在这里插入图片描述

在这里插入图片描述

6、limit与skip

// limit可以指定查询出多少条记录
db.collection.find().limit(NUMBER)   //查询number条记录
db.collection.find().limit()  		//查询所有记录
skip可以指定跳过多少条记录,默认为0
db.collection.find().skip(NUMBER)   //跳过指定的number条记录

猜你喜欢

转载自blog.csdn.net/Linging_24/article/details/123036459