Mongo笔记

概述

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

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,是分布式文件存储数据库。

它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

MongoDB服务端可运行在Linux、Windows平台,支持32位和64位应用,默认端口为27017。
推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。

特点

介于关系数据库和非关系数据库之间的产品,看图定位其产品意义:高效的数据存储,灵活的数据查询
在这里插入图片描述

基本概念

  1. database(数据库)
  2. collection(集合-表格)
  3. document(文档-记录)
  4. field(字段)
    层级结构图,其可以根据数据库的结构去理解。
    在这里插入图片描述

    数据库

MongoDB 中存在以下系统数据库。

  • Admin 数据库:一个权限数据库,如果创建用户的时候将该用户添加到admin 数据库中,那么该用户就自动继承了所有数据库的权限。
  • Local 数据库:这个数据库永远不会被复制,可以用来存储本地单台服务器的任意集合。
  • Config 数据库:当MongoDB 使用分片模式时,config 数据库在内部使用,用于保存分片的信息。

原文链接:https://blog.youkuaiyun.com/nanhuaibeian/article/details/108185211

安装windows

自行从官网下哦
在你data的目录下,创建一个db文件; 类似于:‘D:\Mongodb\Server\data\db’;

因为启动 MongoDB 服务之前需要必须创建数据库文件的存放文件夹,否则命令不会自动创建,而且不能启动成功;

服务器端启动

在这里插入图片描述

直接启动

会去根目录盘符下找db
在这里插入图片描述

mongod   --dbpath  指定db文件路径

默认端口27017
在这里插入图片描述
在浏览器访问显示如下则成功
在这里插入图片描述

客户端启动

monog.exe
在这里插入图片描述

数据库命令

显示所有数据库

show dbs

切换数据库,如果数据库不存在则创建数据库

use <dbname>

显示当前所在的数据库

db

删除数据库

use <dbname>
db.dropDatabase()

集合命令

创建集合

db.createCollection('集合名称')

显示当前数据库下所有集合

show collections 

删除集合

db.集合名.drop()

重命名集合

db.集合名.renameCollection('newname')

文档命令

插入文档

db.集合名.insert(文档对象)

在这里插入图片描述

查询文档

// 无查询条件显示全部
db.集合名.find(<查询条件>)

在这里插入图片描述
注:有没有一种 select * from user 的感觉

更新文档

db.集合名.update(查询条件,新文档)

在这里插入图片描述

删除文档

db.集合名.remove(查询条件)

在这里插入图片描述

mongoose代码(连接服务端)

const mongoose=require("mongoose")

mongoose.connect("mongodb://127.0.0.1:27017/test")

mongoose.connection.on("open",()=>{
    console.log("启动成功")

    let UserSchema=new mongoose.Schema({
        name:String,
        age:String
    })
    let userModel=mongoose.model("user",UserSchema)
    userModel.create({
        name:"fw",
        age:100
    })
})
mongoose.connection.on("error",()=>{
    console.log("启动错误")
})
mongoose.connection.on("close",()=>{
    console.log("关闭")
})

在这里插入图片描述

字段类型

在这里插入图片描述

内置验证校验

字段:{
type:类型
required: 必传
defaule: 默认
enum: 摸鱼
unique:唯一
}

增删改查

   userModel.insertOne({
            name:'xsxxx',
            age:'111'
        }).then(result=>{
            console.log(result)
        })
             userModel.deleteOne({name:'fw1'}).then(result => {
                 console.log('删除成功:', result);
                 // result 包含 { deletedCount: 1 } 如果成功删除
               })
        userModel.updateOne({
            name:"aaa"
        },{
           name:"bbb" 
        }).then(result=>{
            console.log(result)
        })
    

查:

   
        userModel.find().then(result=>{
            console.log(result)
        })
    

条件控制
  • > 使用 $gt
  • < 使用$lt
  • >=使用$gte
  • <=使用$lte
  • !=使用$ne

db.students.find({id:{$gt:3}});id号比3大的所有的记录

or 逻辑或的情况

db.students.find({$or:[{age:18},{age:24}]});

and 逻辑与的情况

db.students.find({$and:[{age:{$lt:20}},{age: {$gt:15}}]});

个性查询
  • 查询接口返回指定字段
    select: 字段:1为显示,0不显示
        userModel.find().select({name:1,lv:1}).then(result=>{
            console.log(result)
        })
    
  • 数据排序
    sort
    1:升序 -1:倒序
     userModel.find().sort({age:-1}).then(result=>{
            console.log(result)
        })
  • 记录截取,只取几条
    limit
       userModel.find().limit(1).then(result=>{
            console.log(result)
        })
    
  • 跳过记录数
    skip
       userModel.find().skip(1).limit(1).then(result=>{
            console.log(result)
        })

图形工具

Robo-3T-免费

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值