he-maoke

导航

day39mongodb使用

mongodb简介:

文档:00mongodb介绍.note
链接:http://note.youdao.com/noteshare?id=9e17d6ff0b9738db8cffb15a125a1248&sub=51D27D685A784B218293B0858C86BF55

 

 

 

 

01 mongodb数据库 了解
 
了解 mongodb
+ 和 mysql 的区别
=> mysql 都是关系型数据库
-> 存储, 多表存储, 每一个表里面可以写一个信息, 和其他表关联
-> 多表联合查询
-> 多表之间可以存在联系, 可以使用 sql 语句让多张表联合在一起
=> mongodb 是非关系型数据库
-> 存储, 以集合(库 database)的形式存储
-> 集合里面都是以 json 文件的格式在存储
-> 多个表之间没有联系, 不能通过语句来产生联系(因为根本没有固定语句)

monogdb基本语法:

db.getMongo() 查看数据库连接地址
// db.version() 查看数据库版本信息
//db.dropDatabase() 删除数据库 --慎用
//db.createCollection("runoob") //创建集合

 
show dbs 查看数据库
db 查看当前数据库
use 数据库名  切换到某一个数据库
show collections 显示集合
db.集合名.操作  对集合进行某种操作
db.集合名.find() 查找
 删除集合
 db.runoob.drop()
  查看所有集合
 show collections
 查看当前集合名称
插入单条   db.shuihu.insertOne({username:'宋江',password:'5555'})
  插入多条 db.shuihu.insertMany([{username:'徐宁',password:'5555',age:36},{username:'张清',password:'5555',age:40}])
  
  
 
 
 删  根据指定键值对条件
删除单条数据  db.colName.deleOne({key:val})
例子 
db.shuihu.deleteOne({"username":"徐宁"})

删除所有数据  db.colName.deleteMany({})
例子 
精准删除多条数据  db.colName.deleteMany({key:val})
db.shuihu.deleteMany({username: {$in: ['卢俊义', '吴用']}})

改  

根据指定键值对条件
修改数据  db.shuihu.updateOne({username:'关羽'},{$set:{username:'赵云'}})
num 为正自增  负 自减
自增/自减单条数据 
例子   
db.shuihu.updateMany({age:19},{$inc:{age:1}})
自增/自减单条数据  
例子   
db.shuihu.updateMany({age:20},{$inc:{age:-1}})
1 基本查询所有数据
db.shuihu.find()


2 格式化查询所有数据 更加美观
db.shuihu.find().pretty()


3 指定键值对条件查询
db.shuihu.find({key:val})


4 指定条件查询(可以为{}表示所有数据) 并限制字段显示
//1 inclusion模式 指定返回的键,不返回其他键
db.shuihu.find({username:'张清'},{username:1,pass:1})
 
 
//2 db.exclusion 模式  指定不返回的键 返回其他键
db.shuihu.find({username:'张清'},{username:0,pass:0})


5 分页查询  分页可以直接交给后端来做
db.colName.find({key:val}).limit(num).skip(start)
//num 表示个数
//start 表示开始索引 默认0
例子 db.shuihu.find({}).limit(5).skip(2)

 
6 排序查询
db.shuihu.find({}).sort({age:1})

//   1 升序  -1 降序
// 例子 
db.shuihu.find({}).sort({age:-1})




7 区间查询 
// 小于val1   大于val2
 
例子   db.shuihu.find({age:{$lt:88,$gt:33}})
// 小于等于val1 大于等于val2
 
例子   db.shuihu.find({age:{$lte:88,$gte:33}})
 模糊查询    -- 实战中用于搜索
db.shuihu.find({username:/江/})  // 查看key中包含val的数据
 


db.shuihu.find({username:/^李/})  //查询key中包含val 以val开头的数据
 

 




2 或查询  
db.shuihu.find({$or:[{username:'花荣'},{username:'及时雨宋江'}]})

3 $in都要里面命中的都要查
db.shuihu.find({username: {$in: ['柴进', '花荣']}})

 
//宇宙唯一id:查询方式 db.shuihu.find({_id:(ObjectId("5ff51baf341b5d5b052695f8"))})

 node 操作mongodb

我们先进入01的文件夹   然后npm init 一路回车 创建一个package.json 文件 
方便记录我们的依赖

然后我们再安装mongoose 这是一个数据库的框架 帮我们处理了 数据库很多细节问题
mongoose优点!
可以为文档创建一个模式结构(Schema)
可以对模型中的对象进行验证
数据可以通过类型转换为对象模型
可以使用中间件来与业务逻辑挂钩
比Node原生的mongodb驱动更容易



此时我们再文件夹新建一个db.js  db.js的意思是database 就是数据库的意思 所以叫做db

 引入mongoose 模块
//引入mongoose 模块
const mongoose = require('mongoose')
//2 连接mongodb并选择指定数据库 dbName
mongoose.connect('mongodb://localhost:27017/gz2104')
//3 连接成功
mongoose.connection.on('connected', ()=>{
    console.log('我在监听成功状态')
})
//4 连接断开
mongoose.connection.on('disconnected',()=>{
    console.log('我在监听连接断开状态')
})
//5 连接错误
mongoose.connection.on('error',()=>{
    console.log('我在监听连接错误状态')
})
//6 连接成功之后 将模块暴露出来
module.exports = {
    mongoose:mongoose
}



现在我们需要先打开cmd mongo bin目录下第一次连接池  mongod --dbpath D:data 
第二部分 不用mongo了  用我们的代码连接   node  db.js 看看效果
这时候我们在建立user.js 我们利用mongoose 的Schema特性给 建立数据模型 什么是数据模型
const db = require('./db')

const userSchema = new db.mongoose.Schema({
    username:{type:String},
    pass:{type:String},
    age:{type:Number}
    
})


module.exports = db.mongoose.model('users',userSchema)

 

07 插入数据准备

此时代码有一个小小的缺点 只能运行mongoose连接数据库 和user 这一个模型 实际开发中模型很多的 所 在新建一个sql.js 代表数据库整合js文件

const user = require('./user')

 


posted on 2022-07-23 09:14  hmkyj  阅读(21)  评论(0编辑  收藏  举报