首页 > 数据库 >数据库必知必会-MongoDB

数据库必知必会-MongoDB

时间:2024-07-17 09:01:05浏览次数:14  
标签:console log err 必知 MongoDB 数据库 ret Blog 必会

文章目录


1. 关系型数据库与非关系型数据库

  • 关系型数据库是指表与表之间存在联系
  • 所有关系型数据库在操作之前都要设计表结构
  • 所有关系型数据库都要通过sql语音来操作
  • 关系型数据库的表还支持约束
  • 非关系型数据库非常灵活(键值对)

2. MongoDB是最接近关系型数据库的非关系型数据库

  • 数据库→数据库;数据表→集合;表记录→文档对象

3. mongodb数据库的基本概念

数据库(大对象)→集合(数组)→文档(小对象)
{
	a(数据库):{
		aa(集合):[
			{"name":"junye1"},(文档1)
			{"name":"junye2"},(文档2)
		]
	}
	b(数据库):{
		bb(集合):[
			{"name":"junye3"},(文档3)
			{"name":"junye4"},(文档4)
		]
	}

}

MongoDB命令

  • 测试是否成功mongod --version测试是否成功
  • 开启服务mongod [–dbpath=数据存储目录路径]默认使用执行mongod命令所处盘符根目录下的/data/db作为数据存储目录,所以在执行第一次命令的时候手动创建一个/data/db作为数据存储目录
  • 关闭服务 :ctrl+c
  • 查看数据库列表show dbs
  • 查看当前操作的数据库db
  • 切换到指定数据库,如没有则(当有数据的时候)新建:use 数据库名称
  • 插入数据 db.student.insertOne({“name”:“jack”})
  • 查询集合(“表==数组”)show conllections
  • 查询集合下所有的数据db.student.find()

5.4. node.js操作mongodb(所有对mongodb数据库操作都是异步的)

# 使用第三方monggose操作(基于上面的包再次封装)(推荐)

//安装npm -i install monggose
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');

const Cat = mongoose.model('Cat', { name: String });

const kitty = new Cat({ name: 'Zildjian' });
kitty.save().then(() => console.log('meow'));

# 6. node.js连接mongodb设计集合结构

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
//设计集合结构(表结构)
//字段名称是表结构中的属性名称(约束)值
var blogSchema = new Schema({
	title:  String,
	author: String,
	body:   String,
	comments: [{ body: String, date: Date }],
	date: { type: Date, default: Date.now },
	hidden: Boolean,
	meta: {
	  votes: Number,
	  favs:  Number,
	  require:true
	}
});
//将文档结构发布为模型
//第一个参数表示数据库名称,mongoose会自动将大写名词的字符串生成小写复数的集合名称例如这里的Blog会变成blogs集合名称
//第二个参数表示架构Schema
var Blog = mongoose.model('Blog', blogSchema);

# 插入数据

var testsave = new Blog({
	title:  "haha",
	author: "junye",
	body:   "ceshi",
	comments: [{ body: "xh", date: "2018-08-06" }],
	date: { type: "2018-08-06", default: "2018-08-06" },
	hidden: false,
	meta: {
		1
	}

})
test.save((function)(err,ret//返回值){
	if(err){console.log('保存失败')}
	else{console.log('保存成功')}
})

# 查询数据

//查询所有
Blog.find(function(err,ret){
	if(err){
		console.log('查询失败')
	}else{console.log(ret)//返回所有数组}
})
//条件查询(可能多个)
Blog.find({title:'haha'},function(err,ret){
	if(err){
		console.log('查询失败')
	}else{console.log(ret)//返回所有数组}
})
//查询一个
Blog.findOne({title:'haha'},function(err,ret){
	if(err){
		console.log('查询失败')
	}else{console.log(ret)//返回所有数组}
})

# 删除数据

//根据条件删除所有
Blog.remove({title:'haha'},function(err,ret){
	if(err){
		console.log('删除失败')
	}else{console.log('删除成功')}
})
//根据条件删除一个
Blog.findOneAndRemove(conditions,[options],[callback])
//根据id删除一个
Model.findByIdAndRemove(conditions,[options],[callback])

# 更新数据

//根据条件更新所有
Blog.findByIdAndUpdate(conditions,[options],[callback])
//根据指定条件更新一个
Blog.findOneAndUpdate([conditions],[update][options],[callback])
//根据id更新一个
Blog.findByIdAndUpdate('xxxxxxxx',function(err,ret){
	if(err){
		console.log('更新失败')
	}else{console.log(ret)//更新成功}
})

# 异步promise操作数据库的方法
User.findOne({
	username:'456'
})
.then(function(user){
	if(user){
		console.log('用户已存在')
	}else{
		return new User({
			username:'aaa'
			password:'123'
			email:'dads'
		}).save()
	}
}).then(function(ret){

})
# 异步回调操作数据库的方法
User.findOne({username:'456'},function(user){}
	if(user){
	}else{
		new User({
			username:'aaa'
			password:'123'
			email:'dads'
		}),save(function(){
		
		})
	}
)

总结

本文介绍了的MongoDB使用,如有问题欢迎私信和评论

标签:console,log,err,必知,MongoDB,数据库,ret,Blog,必会
From: https://blog.csdn.net/qq_24018193/article/details/140402533

相关文章

  • MySQL基础(必会)
    目录MySQL基础数据类型:事务事务操作事务的四大特性,ACID并发事务问题事务隔离级别MySQL基础数据类型:数值类型:字符类型:(!!!!char和varchar的区别一定要记住,博主第一次面试就被问到了)日期时间类型:事务事务是一系列操作的集合,他是不可分割的工作单位,事务会把所有的操作......
  • Linux安装mongodb
    1.安装包下载wgethttps://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.27.tgz2.安装和启动2.1解压tar-zxvfmongodb-linux-x86_64-rhel70-4.0.27.tgz2.2将解压后的目录移动到/usr/local目录下,并改名为mongodbmvmongodb-linux-x86_64-rhel7......
  • MongoDB综合实战篇(超容易)
    一、题目引入在MongoDB的gk集合里插入以下数据:用语句完成如下功能:(1)查询张三同学的成绩信息(2)查询李四同学的语文成绩(3)查询没有选化学的同学(4)统计语文成绩的平均分(5)查询英语成绩最高的同学(6)求每个同学语数英三门课的总成绩二、解题方案1.表格信息插入db.gk.insert({......
  • 小白也能学会的MongoDB实操
    在MongoDB下完成如下操作:1.进入my_test数据库(3分)usemy_test2.向数据库的users集合中插入一个username为sunwukong的文档(3分)db.users.insert({username:"sunwukong"})3.向数据库的users集合中插入一个{username:"zhubajie"}和一个{username:'shaheshang",address:"liushah......
  • MongoDB自学笔记(二)
    一、前言接着上一篇文章,在上一篇文章中学习了如何使用数据库、如何创建集合、如何往集合里添加文档,今天我们继续学习一下更新文档,更新文档相对来说比较复杂笔者打算分多次来记录学习过程。二、文档操作1、更新文档基础语法:db.collection.updateOne(filter,update,opt......
  • 数据库_SQL-MongoDB
    MongoDBMongoDB是一个开源的NoSQL数据库,采用了文档型存储方式。它是面向文档的数据库,意味着数据以文档的形式存储在数据库中,而不是以传统的行-列方式存储。每个文档是一个可自包含的数据结构,类似于JSON格式,使用BSON(BinaryJSON)进行存储和传输 安装apt-安装命令行安装-包管......
  • mongodb数据库
    mongodb与mysql区别:mysql(关系型数据库):优点:支持事务:对于需要保证数据一致性和完整性的操作,事务处理能力非常重要数据一致性:严格遵守关系数据的特征ACID(原子性,一致性,隔离性,持久性)复杂查询优化:对于复杂的关联查询和数据分析,具有较好的优化器和性能场景:如果数据有明确的结......
  • mongoDB 报错 MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017 : 一个可行的
    今天启用mongoshell时发现报错如下:尝试数据指令mongod启动服务器也没有作用,上网查询解决方案后发现是没有在service里面启动mongodb服务,启动该服务后再键入mongosh命令即可正常运行mongoshell。具体操作如下:STEP1:win+R➡️输入services.msc➡️确定 STEP2:找到MongoD......
  • Java架构师必知必会的15个关键技术
    在软件工程的世界里,Java架构师扮演着至关重要的角色,他们不仅需要具备深厚的编程功底,还要有广泛的技术视野和卓越的决策能力。为了成为一名优秀的Java架构师,掌握一系列的关键技术是必不可少的。以下是Java架构师应当精通的15个核心技术点,它们覆盖了从底层基础设施到上层业务逻辑......
  • 新手教学系列——高效管理MongoDB数据:批量插入与更新的实战技巧
    前言在日常开发中,MongoDB作为一种灵活高效的NoSQL数据库,深受开发者喜爱。然而,如何高效地进行数据的批量插入和更新,却常常让人头疼。今天,我们将一起探讨如何使用MongoDB的bulk_write方法,简化我们的数据管理流程,让代码更加简洁高效。常规做法:find、insertone、updateone在处......