热门标签 | 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) // 返回值是数组 [{...}, {...}]
})

推荐阅读
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 利用Node.js实现PSD文件的高效切图
    本文介绍了如何通过Node.js及其psd2json模块,快速实现PSD文件的自动化切图过程,以适应项目中频繁的界面更新需求。此方法不仅提高了工作效率,还简化了从设计稿到实际应用的转换流程。 ... [详细]
  • 本文介绍了如何通过安装和配置php_uploadprogress扩展来实现文件上传时的进度条显示功能。通过一个简单的示例,详细解释了从安装扩展到编写具体代码的全过程。 ... [详细]
  • publicclassBindActionextendsActionSupport{privateStringproString;privateStringcitString; ... [详细]
  • 本文详细介绍了Socket在Linux内核中的实现机制,包括基本的Socket结构、协议操作集以及不同协议下的具体实现。通过这些内容,读者可以更好地理解Socket的工作原理。 ... [详细]
  • 本文详细介绍了如何在PHP中使用Memcached进行数据缓存,包括服务器连接、数据操作、高级功能等。 ... [详细]
  • egg实现登录鉴权(七):权限管理
    权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ... [详细]
  • 本报告记录了嵌入式软件设计课程中的第二次实验,主要探讨了使用KEIL V5开发环境和ST固件库进行GPIO控制及按键响应编程的方法。通过实际操作,加深了对嵌入式系统硬件接口编程的理解。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • Asynchronous JavaScript and XML (AJAX) 的流行很大程度上得益于 Google 在其产品如 Google Suggest 和 Google Maps 中的应用。本文将深入探讨 AJAX 在 .NET 环境下的工作原理及其实现方法。 ... [详细]
  • Nginx 启动命令及 Systemctl 配置详解
    本文详细介绍了在未配置和已配置 Systemctl 的情况下启动 Nginx 的方法,并提供了详细的配置步骤和命令示例。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 本文介绍了如何通过命令行有效地终止所有 Node.js 进程实例,以解决因端口冲突或其他服务冲突导致的问题。 ... [详细]
  • 本文记录了在Windows 8.1系统环境下,使用IIS 8.5和Visual Studio 2013部署Orchard 1.7.2过程中遇到的问题及解决方案,包括503服务不可用错误和web.config配置错误。 ... [详细]
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社区 版权所有