nodejs之MongoDB 非关系型数据库


一、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) // 返回值是数组 [{...}, {...}]
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值