IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 关于MongoDB基础使用 -> 正文阅读

[大数据]关于MongoDB基础使用

作者:32_44

基本需要在超级管理权限下运行,所有可以在文件夹按住shift时,点击鼠标右键开启。
点击在此处开启PowerShell窗口

net start mongodb 开启数据库

net stop mongoDB 关闭数据库

const mongoose =require('mongoose');

mongoose.connect('mongodb://localhost/playground',{ useUnifiedTopology: true,useNewUrlParser: true })
  .then(()=>console.log('数据库连接成功了'))
  .catch(err=>console.log(err,'数据库连接失败了'))

一般要在超级权限下开启

MongoDB增删改查

3.1创建集合

创建集合分为两步,一是对集合设定规则,二是创建集合,创建mongoose.Schema构造函数的实例即可

//引入mongoose 第三方模块 用来操作数据库
const mongoose =require('mongoose');
// 连接数据库
mongoose.connect('mongodb://localhost/playground',{ useUnifiedTopology: true,useNewUrlParser: true })
  .then(()=>console.log('数据库连接成功了'))
  .catch(err=>console.log(err,'数据库连接失败了'))

//设定集合规则
const courseSchema =new mongoose.Schema({
  name:String,
  author:String,
  isPublished:Boolean
});

// 创建集合并应用规则 model的第一个参数首字母大写
const Course=mongoose.model('Course',courseSchema) //在数据库里courses多了个s
3.2创建文档

在可视化里看不到创建的数据库 是因为没有数据

需要创建文档实际上就是向集合里插入数据

1.创建集合实例

2.调用实例对象下的save方法将数据保存到数据库中

//创建集合实例
const course=new Course({
  name:'Node.js course',
  author:'杨大师',
  tags:['node','backend'],
  isPublished:true
})
//调用save方法保存到数据库中
course.save();

除了上面,还有一个create方法可以插入数据

Course.create({
  name:'JavaScript基础',
  author:'老z',
  isPublished:false
},(err,doc)=>{
  // 错误对象
  console.log(err);
  // 当前插入的文档
  console.log(doc);
})

*****输出*****
数据库连接成功了
null	//无err  报null
{
  _id: 60a74d72b3e0f436d0e87fdc,
  name: 'JavaScript基础',
  author: '老z',
  isPublished: false,
  __v: 0
}

除了上面这个写法,还可以将它写为下面这种形式,这是Promise的格式,说明这是一个异步操作

以后主要也是使用Promise对象的方式

Course.create({name:'高数',author:'舞舞舞'})
      .then(doc=>console.log(doc))
      .catch(err=>console.log(err))
3.3 MongoDB数据库导入数据

mongoimport -d 数据库名称 -c 集合名称 -file要导入的的数据文件

启用mongoimport 需要先将MongoDB数据库的安装目录中的bin文件夹绑定到环境变量下的path目录

在这里我是放在

D:\MongoDB\Server\4.4\mongodb-database-tools-windows-x86_64-100.2.1\bin

把这个复制黏贴到Path中

举例 -d 就是database 导入到哪个数据库当中 -c就是导入到哪个集合当中

在终端  输入 mongoimport -d playground -c users --file ./user.json
3.4查询文档

在查询文档时,依旧需要保持数据库连接,以及创建集合等要求。

//根据文件查找文档(条件为空则查询所有文档)

Course.find().then(result => console.log(result))

*****返回*****
[
  {
    _id: 60a74adb02ef5018d02f3759,
    name: 'Node.js course',
    author: '杨大师',
    isPublished: true,
    __v: 0
  },
  {
    _id: 60a74d3816df5831845a9ba9,
    tags: [],
    name: 'JavaScript基础',
    author: '老狗',
    isPublished: false,
    __v: 0
  },
  { _id: 60a74e1b0f9daf3b40a195c6, name: '高数', author: '舞舞舞', __v: 0 }
]

在find()方法里面可以设定查询某个对象,返回的是数组

User.find({_id:'5c09f267aeb04b22f8460968'}).then(result=>console.log(result))

用findone()方法查找的是一个对象 不输参数的话,默认返回第一条文档

User.findOne({_id:'5c09f267aeb04b22f8460968'}).then(result=>console.log(result))

匹配大于 g t 小 于 gt 小于 gtlt

User.find({age:{$gt:20,$lt:50}}).then(result=>console.log(result))

匹配包含 $in

User.find({hobbies:{$in:['敲代码']}}).then(result=>console.log(result))

选择要查询的字段 返回内容会出现__id 如果不想查询某个默认字段 可以在该字段前加个 - 例如

-_id

User.find().select('name email -_id').then(result => console.log(result))

将数据按照年龄进行排序 默认从小到大(升序)

如果需要降序,只需要在字段前加个 - 负号

User.find().sort('age').then(result=>console.log(result))
User.find().sort('-age').then(result=>console.log(result))

skip跳过多少条数据 limit限制查询数量 多用于分页时

User.find().skip(2).limit(3).then(result=>console.log(result))
3.5 删除文档

删除单个

Course.findOneAndDelete({}).then(result=>console.log(result))

删除多个

Course.deleteMany().then(result=>console.log(result))
3.6更新文档
User.updateOne({查询条件},{要修改的值}).then(result=>console.log(result))
//更新单个
User.updateOne({name:'张三'},{name:'杨老二'}).then(result=>console.log(result))
//更新多个
User.updateMany({},{age:56}).then(result=>console.log(result))
 
3.7 mongoose验证

在创建集合规则,可以设置当前字段的验证规则,验证失败则插入失败

请添加图片描述

打印错误信息

Post.create({   title:   666 ,category:'123',age:55, author:'db'})
    .then(result=>console.log(result))
    .catch(error=>
      {
        //获取错误信息对象
        const err=error.errors;
        //循环错误信息对象
        for(var attr in err){
          //将错误信息打印到控制台中
          console.log(err[attr]['message']);
        }
      })

注:本文仅作为自己学习的经验日志…如若侵权,联系即删。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-13 09:20:26  更:2021-09-13 09:21:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:46:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码