2020年一篇文章入门Mongodb

logo

不要问我为什么挂图,听说挂图可以提供浏览量

介绍

MongoDB是一种存储二进制JSON格式的非关系数据库。

版本

小版本号,奇数为开发板、偶数为稳定版。

3.2版本后不支持32位系统。

下载安装(4.2)

下载:https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2012plus-4.2.2-signed.msi

安装:无脑下一步

配置:配置环境变量

默认端口:27017

核心概念

  • 数据库:数据的仓库
  • 集合:类似于数组
  • 文档:Mongo最小的单位,一般操作的是文档

注意:在MongoDB中数据库和集合不用手动创建。

系统变量

  • db:当前数据库的名字

基本指令

  • show dbs:列出数据库

  • use <数据库名>:进入数据库

    • 注意:如果没有数据库会自动创建数据库。
  • show collections :显示数据库中所以的集合。

  • db.<collections>.drop():删除集合

  • db.dropDatabase(): 删除所在的数据库

CRUD指令

插入文档

  • db.<collections>.insert(JSON)
    • 向<collections>集合中插入一个JSON文档。

查询文档

  • db.<collections>.find()
    • 查询<collections>中的所有JSON文档,返回的是数组。
  • db.<collections>.findOne({<filed>:<value>})
    • 查询与<filed>等于<value>的JSON文档,返回的是对象。
  • 内嵌查询:{“filed.filed”:value}
  • 分页:.skip().limit()

修改文档

  • db.<collections>.update(query,doc,options)
    • 查询到query,将query匹配的那个JSON进行替换为doc。
    • 操作符:在doc中写
      • $set:{}:修改某一个字段。
      • $unset:{}:删除某个字段。
      • $push:{}: 添加元素到一个数组
      • $addToSet:{}: 添加不重复的元素到数组
    • 参数:options
      • mulit:boolean 修改多个
    • 注意:默认改一个。

删除文档

  • db.<collections>.deteleOne()
  • db.<collections>.deleteMany()
  • db.<collections>.remove()
    • 注意:默认删除多个。

文档关系

  • 一对一
  • 一对多
  • 多对多

文档其他操作

sort

db.<collections>.find().sort(SortJSON);
SortJSON:
{
    filed:1 | -1
}
说明:
    对filed字段进行
    1-升序或
    -1-降序
    排序

投影

db.<colletions>.find({},MapJSON);
MapJSON:
{
    filed:0 | 1
}
说明:
显示或隐藏某个字段
0-隐藏
1-显示

Mongoose

Node操作mongodb的库。

优势

  • 可以对文档创建一个模式结构(Schema)
  • 对模型中的对象进行约束。
  • 自动类型转换

对象

  • Schema:模式对象
  • Model:集合就是模型
  • Document:就是JSON

Schema->Model->Document

安装

npm i -S mongoose

使用

const mongo = require('mongoose');
const { Schema, model } = mongo;

const stuSchema = new Schema({
  name:String,
  age:Number,
  gender:Number,
  address:String
});

const Student = model('Student', stuSchema);

mongo.connection.once('open',()=>console.log("连接成功"));

mongo.connection.once('close', ()=> console.log("断开连接"));

async function start() {  
  const connect = await mongo.connect('mongodb://localhost:27017/dome1',{useNewUrlParser:true ,useUnifiedTopology:true});
  // const resRowInfo = await Student.create({
  //   name:100,
  //   age:"15",
  //   gender:"男"
  // });
  // // const resRowInfo = await Student.find();
  // const resRowInfo = await Student.remove({gender:null});
  const resRowInfo = await Student.findOne()
  resRowInfo.name = '猪八戒';
  resRowInfo.address = '高老庄';
  resRowInfo.save();
  console.log(resRowInfo);
  // connect.disconnect();
} 
start();

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容