热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

nodejs之MongoDB非关系型数据库

文章目录一、MongoDB是什么?二、使用1.下载安装2.指令3.mongoose模块一、MongoDB是什么?MongoDB是一种文档数据库,它所具


文章目录

  • 一、MongoDB是什么?
  • 二、使用
    • 1. 下载安装
    • 2. 指令
    • 3. mongoose模块




一、MongoDB是什么?

MongoDB 是一种文档数据库,它所具备的可扩展性和灵活性可以满足您对查询和索引的需求


二、使用


1. 下载安装

1.下载安装包:https://www.mongodb.com/download-center/community
2.安装流程:
next
勾选同意 -> next
选择complete
去掉Install MongoDB as a Service -> next
去掉Install MongoDB Compass -> next
install …
finish
3.在cmd中执行 mongod 启动数据库(保留当前终端窗口,等待连接),提示缺少目录:c:\data\db 需要自己创建
4.在cmd中执行 mongo 连接操作数据库,执行 show dbs,显示数据库,安装成功!!!

注意:提示找不到命令,需要去配置系统环境变量(配置完重启cmd后执行3 4)
配置系统环境变量:C:\Program Files\MongoDB\Server\4.2\bin


2. 指令

mongod 启动数据库(保留当前终端窗口,等待连接)
mongo 连接操作数据库show dbs 查看所有数据库
db 查看当前数据库
use mydb 切换到指定数据库(不存在则创建数据库)
db.dropDatabase() 删除当前数据库(注意切换到指定数据库)show collections 查看当前数据库已有集合(表)
db.createCollection("users") 创建集合(表)
db.users.drop() 删除当前数据库中的users集合db.users.insert({name:'xm',age:23,sex:1}) 向集合中插入文档(集合不存在会被自动创建)db.users.remove({'title':'123'}) 删除所有title为123的数据
db.users.remove({'title':'123'},1) 删除1条title为123的数据
db.users.remove({}) 删除所有数据db.users.update({'title':'123'},{$set:{'title':'456'}}) 更新集合内容db.users.find() 查询当前集合所有内容
db.users.find({key1:value1}) 查询当前集合指定内容
db.users.find({age:{$gt:25}}) 查询age大于25的文档
db.users.find({age:{$lt:25}}) 查询age小于25的文档
db.users.find({age:{$ne:25}}) 查询age不等于25的文档
db.users.find({age:{$in:[20,25]}}) 查询age为20和25的文档
db.users.find({$or:[{age:{$gt:22}},{sex:1}]}) 查询age大于22 或 sex为1的文档
db.users.find({$and:[{age:{$gt:22}},{sex:1}]}) 查询age大于22 且 sex为1的文档
db.users.find({name:/m$/}) 正则表达式查询name结尾是m的文档

3. mongoose模块


mongoose模块,node操作数据的插件


文档:http://mongoosejs.net/docs/index.html
安装:npm install mongoose
mongoose 的一切始于 Schema
通过schema对象来操作数据库


  • 创建连接

// 引入模块
const mongoose = require('mongoose')
// 连接数据库test
mongoose.connect('mongodb://localhost/test',{ useNewUrlParser: true, useUnifiedTopology: true })
// 连接数据库对象
let db = mongoose.connection
// 监听连接失败事件
db.on('error', console.error.bind(console, 'connection error:'))
// 监听连接成功事件
db.on('open', function() {console.log('====== db connect ok======')
})

  • 创建schema对象

const mongoose = require('mongoose')
//创建schema对象
const userSchema = mongoose.Schema({user: {type: String, required: true},pass: {type: String, required: true}
})
// 把schema对象转成与集合关联的数据模型
let User = mongoose.module('users', userSchema)
// 通过User对象对数据进行增删改查// 导出
module.exports = User

  • 操作数据库

返回一个promise对象


// 增加数据
User.insertMany({user: 'jack', pass: 123})
.then((data) => {console.log('添加成功') // 返回值是一个数组 [{}]
})
.catch((err) => {console.log(err)
})// 删除数据
User.remove({user: 'jack'})
.then((data) => {console.log(data) // 返回值是一个对象 { n: 1, ok: 1, deletedCount: 1 }
})// 修改数据
User.update({user: 'jack'}, {$set: {user: 'lucy'}})
.then((data) => {console.log(data) // 返回值是 { n: 1, nModified: 1, ok: 1 } { n: 0, nModified: 0, ok: 1 }
})// 查询数据
User.find({pass: '123'})
.then((data) => {console.log(data) // 返回值是数组 [{...}, {...}]
})

推荐阅读
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • MongoDB用户验证auth的权限设置及角色说明
    本文介绍了MongoDB用户验证auth的权限设置,包括readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase、cluster相关的权限以及root权限等角色的说明和使用方法。 ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
author-avatar
我也不走了_931_327
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有