ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

day39mongodb使用

2022-07-23 09:33:50  阅读:141  来源: 互联网

标签:username day39mongodb 数据库 mongoose db 使用 shuihu find


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')

 


标签:username,day39mongodb,数据库,mongoose,db,使用,shuihu,find
来源: https://www.cnblogs.com/he-maoke/p/16508169.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有