mongodb数据库

MongoDB

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

常用命令

show dbs      查看数据库
use dbname    创建数据库 如果不存在创建数据库,否则切换到数据库
show collections 显示数据库集合

1.添加数据

	db.web.save({"name": "meiejuna"})  创建了名称为 web 的名称,名
	db.web.insert({"name": "meijuna"})  
	插入相同的数据,sava 覆盖,insert 报错
	
2.删除数据
      
   db.students.remove( {} )  			    删除 students 集合下的所有数据
   db.students.remove({"name": "meijuna" }) 删除 students 集合为 name 为 meijuna 的数据
   db.students.drop() or db.runCommand({""})删除 students 集合
   db.runCommand( { dropDaatabase: 1 } )    删除当前数据库
   
3.修改数据

db.students.updata({"name": "meijuna"},set:{"sex":"women"})                单行修改
db.students.updata({"name": "meijuna"},{$set:{"sex":"women"}}, true, true) 多行修改
			     //{查找条件} , { 修改内容 }      匹配所有条件数据 修改所有匹配项

4.查找数据
  db.students.find()          查找 students 集合中的 所有    数据
  db.students.findONe()       查找 students 集合中的 第一条  数据
  db.students.find().pretty() 可视化查询 
  
5.排序 
db.students.find().sort({"age": 1}) 1 升 -1 降序

6.截取
db.students.find().skip(2)  下标为 2 开始截取
db.students.find().limit(2)   截取 2 条数据

7.筛选显示
db.students.find({age:20},{_id:0,age:1,name:1})
     					   0,筛选的结果不显示,1筛选结果显示

SQL简介

  • 关系型数据库 以行和列的形式存储数据,以便于用户理解。这一系列的行和列被称为表,一组表组成了数据库。表与表之间的数据记录有关系。

  • 关系型数据库有:mySql oracle SqlServer Access **db2 ** 等

NoSQL简介

  • NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
  • NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
  • 非关系型数据库: MongoDBRedisHBase,**CouchDB ** 等

非关系型数据库与关系型数据库区别

关系型数据库的优势:

1. 复杂查询
  • 可以用SQL语句方便的在多个表之间做非常复杂的数据查询。
2. 事务支持
  • 使得对于安全性能很高的数据访问要求得以实现。

非关系型数据库的优势:

1. 性能
  • NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。
2. 可扩展性
  • 同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。

MongoDB优点

它的特点是高性能、易部署、易使用,存储数据非常方便。

主要功能特性有:

  • 面向集合存储,易存储对象类型的数据。

  • 模式自由。

  • 支持动态查询。

  • 支持完全索引,包含内部对象。

  • 支持查询。

  • 支持复制和故障恢复。

  • 使用高效的二进制数据存储,包括大型对象(如视频等)。

  • 自动处理碎片,以支持云计算层次的扩展性

  • 支持RUBY,PYTHON,JAVA,C++,PHP等多种语言。

  • 文件存储格式为BSON(一种JSON的扩展)

BSON 存储格式

BSON是一种类似json的二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象数组对象,但是BSON有JSON没有的一些数据类型,**如Date和BinData类型。

BSON有三个特点:轻量性可遍历性高效性

非关系型数据库文件存储格式为 BSON(一种JSON的扩展)。

MongoDB下载与安装

1. MongoDB下载:

https://www.mongodb.com/download-center#community>

2. 设置环境变量

在环境变量窗口中一般有两个变量,一个是你当前所使用的用户独有的环境变量,另一个是所有用户都可以访问的系统变量。其实如果在你的电脑上你只使用一个用户的话,那么不管你修改的用户的环境变量还是系统变量,效果都是一样的。为了以防未来会新建其他用户,那么我建议你修改系统变量而不是某个用户独有的环境变量。

3. 测试连接

  • 管理员身份运行 cmd 输入 mongo
  • 启动 mongdb 服务 net start mongdb
  • 关闭 mongdb 服务 net stop MongoDB

4. 安装可视化工具(Robo 3T)

https://robomongo.org/download

node 使用 MongoDB

连接 MongoDB

//1. 下载 mongoose 
cnpm i mongoose -D 

//2. 引入 mongoose 
const mongoose = require( 'mongoose');

//3. 连接 mongoose 
// 连接本地mongodb ,本机的ip 127.0.0.1,端口:27017 数据库:student
mongoose.connect("mongodb://127.0.0.1:27017/student",function(err){
   if(!err){ 
     console.log("connected to Mongodb"); //连接成功
   }else{
     throw err;//如果连接失败,则抛出异常
   }
});

存储数据

Schema不仅定义了文档结构和使用性能,还可以有扩展插件、实例方法、静态方法、复合索引、文档生命周期钩子。

Schema  :   一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力

Model   :   由Schema发布生成的模型,具有抽象属性和行为的数据库操作对

Entity  :   由Model创建的实体,他的操作也会影响数据库

存储数据步骤:定义Schema (骨架) > 创建model(模型)> Entity实例化方法。

const mongoose = require( 'mongoose');
const Schema = mongoose.Schema;

mongoose.connect( 'mongodb://127.0.0.1:27017/meijuna',(error) => {
  if ( error ) {
    throw error
  } else {
    console.log( 'database is connected~')
  }
})

const userSchema = new Schema({  //定义数据模型
  username: String,
  password: String
})

//通过模式studentSchema  创建一个模型studentModel 
var studentModel = mongoose.model("students",studentSchema );

var instance1 = new studentModel (); 
instance1.name="tangyan";
instance1.age="18";

instance1.save(function(err){   //通过save方法保存
    if (err) {
       console.log('保存失败');  
       return;
    }
 });

查询数据

// 查
userModel.find({}, ( error, result ) => {
 	if ( error ) throw error 
	console.log ( result )
})

修改数据


userModel.find({ username: 'aaa'}, ( error, result) =>{
  if (error) throw error
  
  const _id = result[0]._id

  userModel.findById(_id, ( error, doc ) => {    // 修改
    if (error ) throw error
    console.log( doc );
    doc.username = "meijuna";
    doc.save ( (error) => {
      throw error
      console.log("数据修改成功")
    })
  })
})


删除数据

userModel.find({ username: 'aaa'}, ( error, result) =>{
  if (error) throw error
  const _id = result[0]._id

  userModel.findById(_id, ( error, doc ) => {    // 删除
    if (error ) throw error

    doc.remove( (error) => {
        if (error) throw error
        console.log('数据删除成功!')
    })

  })
})

注册

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

mongoose.connect('mongodb://127.0.0.1:27017/meijuna', (error) => {
  if (error) {
    throw error
  } else {
    console.log('database is connected !!!')
  }
})
const userSchema = new Schema({ //定义数据模型
  username: String,
  password: String
})
const userModel = mongoose.model('users', userSchema) //模型创建
const user = new userModel(); //创建实体

router.get('/', (req, res, next) => {
  const { username,  password } = req.query;
  console.log(username,password);
   userModel.find({}, (error, result) => {

    var flag = result.some((item) => {
      return item.username === username
    })
    if (flag) { //用户名存在
      res.render('register', {
        data: JSON.stringify({
          ret: true, //身份验证 权限验证
          status: 2 //0 表示失败 1:成功  2:
        })
      })
    } else {
      user.username = username;
      user.password = password;
      user.save();

      res.render('register', {
        data: JSON.stringify({
          ret : true,
          status: 1
        })
      })

    }
  })

})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值