MongoDB数据库

本文详细介绍了MongoDB的安装、基本概念、专业术语、数据存储方式、数据库操作以及数据类型。同时,讨论了在Node.js环境中操作MongoDB的实践,包括mongoose库的使用,以及WebSocket和socket.io在数据推送中的应用。最后,涵盖了MongoDB的集合操作和数据库管理。
摘要由CSDN通过智能技术生成

1.安装MongoDB

下载对应版本的mongodb来进行安装,安装的后注意需要手动设置数据库的位置

1.在安装的时候选择安装地址,一般情况下安装在c盘(默认安装地址)即可
2.我们在c盘(最好)建立一个data文件夹,在data文件夹下面再建立一个db文件夹
3.在mongodb的bin文件夹下,cmd执行 mongod --dbpath c:\data\db

$mongod --dbpath c:\data\db

4.运行mongod.exe来启动mongodb
5.依然在mongodb的bin文件夹下cmd 输入mongo回车,就可以操作mongodb,例如 show databases;

小贴士:如果安装不上,因为有一些个dll文件缺少,要么去按照百度教的方法下载驱动精灵修复系统,要么重装系统,要么就用自己的电脑

一般情况下,使用命令行操作数据库就可以,如果不愿意请自行下载各种可视化工具:
基于node可视化工具 mongoose

2.MongoDB概念

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

它的特点:高性能、易部署、易使用,存储数据非常方便。

3.专业术语

SQL术语、概念MongoDB术语、概念说明
databasedatabase数据库
tablecollection表\集合
rowdoucument数据记录行\文档
columnfield数据字段\域
indexindex索引
table joins表连接 mongodb不支持
primary keyprimary key主键,mongodb自动将_id作为主键

database>colletions>documents

4.mongodb的存储数据类似于js的json格式对象,或者json文件存储数据的方式:

[
    {
        "_id":ObjectId("1726iuhas678971726731"),
        "age":25,
        "city":"beijing",
        "email":"asdgakj@qq.com"
    },
    {
        "_id":ObjectId("1726iuhas678971726731"),
        "age":25,
        "city":"beijing"
    }
]

5.数据库

一个mongodb中可以建立多个数据库。

MongoDB的默认数据库为"local",该数据库存储在data目录中。

MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的目录中。

6.简单的操作

show databases 查看数据库

db 查看当前数据库

use name 切换某个数据库

7.文档

文档是一个键值(key-value)对。

MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。
一个简单的文档例子如下:
[
{“genres”: [“犯罪”,“剧情” ],“title”: “肖申克的救赎”},
{“title”:“阿甘正传”,grade:“8.4”,“genres”:“励志”}
]

8.集合

集合就是 MongoDB 文档组,类似于 RDBMS (关系数据库管理系统:Relational Database Management System)中的表格。

集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。

{
    'title':['aaa',"aaa","aaa",["a":{}]]
},
{
    'title':'bbb'
}

9.数据类型

String : 这是最常用的数据类型来存储数据。在MongoDB中的字符串必须是有效的UTF-8。

Integer : 这种类型是用来存储一个数值。整数可以是32位或64位,这取决于您的服务器。

Boolean : 此类型用于存储一个布尔值 (true/ false) 。

Double : 这种类型是用来存储浮点值。

Min/ Max keys : 这种类型被用来对BSON元素的最低和最高值比较。

Arrays : 使用此类型的数组或列表或多个值存储到一个键。

Timestamp : 时间戳。这可以方便记录时的文件已被修改或添加。

Object : 此数据类型用于嵌入式的文件。

Null : 这种类型是用来存储一个Null值。

Symbol : 此数据类型用于字符串相同,但它通常是保留给特定符号类型的语言使用。

Date : 此数据类型用于存储当前日期或时间的UNIX时间格式。可以指定自己的日期和时间,日期和年,月,日到创建对象。

Object ID : 此数据类型用于存储文档的ID。

Binary data : 此数据类型用于存储二进制数据。

Code : 此数据类型用于存储到文档中的JavaScript代码。

Regular expression : 此数据类型用于存储正则表达式

在node.js中操作MongoDB

可以使用 mongoose 和 mongodb 第三方模块

socket

socket 链接指的是双向通信链接,而这个双向通信链接的每一段都被称为是一个socket

思考一个面试题:

如何控制客户端在某一个时刻alert(1), 这个时间由服务端决定

如何实现信息推送

在之前我们一直都是用轮询来实现,就是不断的像后端发送请求,但是性能极差。。。。

根本原因是因为服务端无法主动像客户端发送信息

现在H5提供了websocket, 可以帮助我们实现这个问题(实现了客户端和服务端之间的双向通信链接)

双向通信socket技术实现点:

  1. 创建服务端socket

    ws -> new WebSocket…

  2. 服务端socket监听

    wss.on(‘connetcion’,listener…)

  3. 创建客户端socket

    new WebSocket(‘ws://10.9.189.110:3000’)

  4. 客户端向服务端发送数据

    ws.send

  5. 服务端像客户端发送数据

    ws.send

  6. 客户端接受服务端数据

    onmessage event

  7. 服务端接收客户端数据

    ws.on(‘message’, () => { … })

  8. close error open…

因为websocket会有一些兼容问题,所以其实真正应用中会使用socket.io

作用: 用socket.io改装websocket应用

10.库的操作

  • help的查看命令提示

help

db.help()

db.test.help()

db.test.find().help()

  • 创建/切换数据库

use music

  • 查询数据库

show dbs 空库将不会显示

db.albums.insertOne({‘title’:‘bey bey’})来插入一条后再看

  • 查看当前使用的数据库

db/db.getName()

  • 显示当前DB状态

db.stats()

  • 查看当前DB版本

db.version()

  • 查看当前DB的链接机器地址

db.getMongo()

  • 删除数据库

db.dropDatabase()

Collection聚集集合操作

创建一个聚集集合

db.createCollection(“collName”, {size(集合大小): 20, capped(固定大小,可提高使用效率): true, max(最大值): 100});

db.collName.isCapped(); //判断集合是否为定容量

得到指定名称的聚集集合

db.getCollection(“account”);

得到当前db的所有聚集集合

db.getCollectionNames();

显示当前db所有聚集的状态

db.printCollectionStats();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值