mongdb

文章介绍了数据库的作用和类型,重点讲解了非关系型数据库Mongodb的结构以及如何通过命令行进行数据管理,包括增删改查等基本操作。此外,还提到了在Node.js环境中使用mongoose模块进行Mongodb操作的方法。
摘要由CSDN通过智能技术生成
一、介绍
  1. 数据库介绍

网站中所使用的数据错综复杂,各种数据之间又互相勾连,例如电商网站的商品分类、推荐商品、猜你喜欢商品、商品详情、购物车数据等等。为了方便管理,会将网站中所使用的所有数据集中在一起进行管理,方便对数据进行各种条件下的查询,实现性能的优化。

存储数据,可以选择使用文件存储,但文件的读写效率偏低,随着科技发展,到目前为止,大家公认的效率和性能较高的存储系统,就是数据库了。

数据库的数据也是存储在磁盘中的,只是有其独有的存储规律和管理办法,从计算机较角度来看,其实就是一个专业管理磁盘中数据的软件。

  1. 数据库分类
  • 关系型数据库:代表数据库:Mysql、SqlServer、Oracle...

  • 非关系型数据库:代表数据库:MongoDB、Redis...

  1. mongdb介绍

Mongodb是非关系数据库中的一种,采取json格式对数据进行管理,对js是非常友好的。

体系介绍:mongodb由多个"库"组成,每个库由多个"集合"或"表"组成,每个集合由多个"文档"或"数据"组成。

二、命令行操作
  • 基本操作:

//启动操作
mongo
//退出mongoDB
exit
//查看所有的数据库列表
show dbs
//创建数据库或切换数据库
use 数据库名
//查看库中所有表
show tables
show collections
//数据库中的表不需要创建,只要添加数据就能将表自动创建好。
db.表名/集合名.insert(JSON格式数据)
//删除表
db.表名/集合名.drop()
//删除的是当前的库
db.dropDatabase()
  • 数据操作

  • _id是由系统自动生成,代表这个数据的唯一标识,类似于人的身份证,确保数据的唯一性,永远不会重复

// 添加文档数据
db.表名/集合名.insertMany([{}, {}, {}])
//删除集合中已存在的文档数据
db.表名.deleteOne({条件})
//根据指定条件,将数据中的某一部分修改为指定的新数据
db.表名.updateOne({条件}, {$set: {新的数据}})
//让指定条件的数据中的某个数字自增或自减
db.表名.updateOne({条件}, {$inc: {键: 自增多少的数字}})
//查询所有的数据,获取全部数据
db.表名/集合名.find();  
//带条件的查询
db.表名/集合名.find({条件})
//并且的条件:{条件, 条件}
//或者的条件:{$or: [{条件}, {条件}]}
//某个键 等于 某个值  {键: 值}
//某个键 大于 某个值  {键: {$gt: 值}}
//某个键 大于等于 某个值  {键: {$gte: 值}}
//某个键 小于 某个值  {键: {$lt: 值}}
//某个键 小于等于 某个值  {键: {$lte: 值}}
//某个键 不等于 某个值  {键: {$ne: 值}}
//某个键 在 某个数组中  {键: {$in: [值, 值]}}
//以正则表达式作为条件查询  {键: 正则表达式}
//空条件表示查询所有 {}
//在查询结果中,希望某些键值对不显示或强制显示;0表示这个键不显示,1表示这个键要强制显示
db.表名.find(条件, {键: 0/1})
//统计查询结果的数据的数量 
db.表名.find(条件).count()
//统计所有数据的数据量
db.表名.count()
//排序;1表示升序,-1表示降序
db.表名.find(条件).sort({键: 1/-1})
//数据很多,但是要分页显示,根据当前是第几页来查询需要的数据
db.表名.find().skip(数字).limit(数字);
//skip中的数据,表示跳过前面多少条数据,开始查询
//limit中的数据,表示要查询多少 条数据
三、可视化操作

mongodb的管理软件有很多,例如:compass、robot...

官方推荐使用compass,所以compass下载成功后,只需要双击安装即可,不需要做其他操作,会自动安装。安装完成后会自动启动,这个软件是用来管理数据库的,并不能代表数据库,所以这个软件首先需要连接mongodb连接成功后,就可以看到数据库中所有的库了

四、代码操作
  1. 操作步骤

在代码中操作mongodb,需要依赖第三方模块mongoose,仅限于nodejs环境中使用。

//下载安装:npm i mongoose
//导入模块
const mongoose = require('mongoose')
//连接数据库
mongoose.connect('mongodb://localhost:27017/数据库名')
//创建schema
//由于mongodb属于非关系型数据库,对数据的类型和表头没有约束,但在实际引用中,一个表中的数据类型和表头都是相同的,所以mongoose内部封装了schema,用于设置和约束数据的类型和表头。
const UserSchema = new mongoose.Schema({
    // 字段名/域名称
    name: {
        // 指字域类型
        type: String,
        // 必填字段
        required: true,
        // 字段最小长度  minlength 用于字符串类型
        minlength: 2,
    },
    age: {
        type: Number,
        // 默认值
        default: 10,
        // 字段最小值 min用于数字类型
        min: 1,
    },
    password: String,
    email: String,
    // 定义此字段为 字符串数组类型
    hobbies: [String],
});
//对表头数据的约数规则参考:http://www.mongoosejs.net/docs/guide.html
//创建model,对数据的操作都是通过model进行的
//参数1:模型名称,如果没有参数3,会将模型名的复数表示作为表的名称
//参数2:给当前表创建好的schema
//参数3:表名,可选
const Model = mongoose.model('User', UserSchema, 'users')
model.insertMany({key:value}, (err, docs) => {
    err为错误信息
    docs为插入的结果信息,是一个数组
})
model.deleteOne({条件}, (err, docs) => {
    err为错误信息
    docs为删除的结果信息
})
model.updateOne({条件},{$set:{key:value}}, (err, docs) => {
    err为错误信息
    docs为修改的结果信息
})
model.find({条件},{可选字段返回:0/1},{skip:0,limit:10}, (err, docs) => {
    err为错误信息
    docs为查询的结果信息 - 返回数组
})

Model.findOne({条件},{可选字段返回:0/1}, (err, docs) => {
    err为错误信息
    docs为查询的结果信息 - 返回对象
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值