MongoDB基础使用

MongoDB

是一个基于分布式文件存储的数据库,由C++编写 

为web应用提供可扩展的高性能数据存储解决方案
是介乎于关系型和非关系型数据库之间的产品,但是属于非关系

数据类型是bson 可以存储较复杂发数据类型
特点
高性能、容易部署使用、存储数据方便、
1.面向集合存储 
2.模式自由
3.支持动态查询
4.支持完全索引 包括内部对象
5.支持赋值和故障恢复
6.使用二进制数据存储 包括视频等
7.自动处理碎片
8.支持多种语言
9.存储格式是bson (json的扩展)

组成
文档 (一条数据)
集合 (表)
数据库 (数据库)

数据类型
String (MongoDB中,UTF-8编码才是合法的)
Integer
boolean
double
array
timestamp 
object  用于内嵌文档
null    创建空值
date
object id 对象id 创建文档的id
code     代码类型  用于在文档存储 js代码
binary data 二进制数据



1.objectId 类似于唯一主键 可以很快的生成和排序 12字节
如  0123     456       78   91011
    时间戳 机械识别码   PID   随机数
    
MongoDB 中存储的文档必须有一个是_id键 这个键可以是任意类型 默认是objectId对象


2. 时间戳 与普通日期类型不相关 是一个64位的值 
   前32位是与1970.1.1相差的秒数  
   后32位是在某秒中操作的一个递增序数
   
3.日期
表示1970.1.1的毫秒数  此日期之前是负数 

MongoDB安装

默认端口号27017

在linux中安装MongoDB 镜像名 docker·io/mongo  直接拉取使用即可

常用命令

所有操作都是基于集合来操作的

use 数据库名  (有 使用 / 没有 创建)
show 数据库名  查看 

插入
db.集合.insert({“name” : "zhangsan"}) 未指定主键 所以默认添加_id
db.集合.insert({"_id":"123",“name” : "zhangsan"}) 手动添加主键

查询所有
db.集合.find() 
db.集合.find({“key”:“val”})  按条件查询
查询单条
db.集合.findOne()  查询一条 ,也是可以带条件查询的
db.集合.find().limit(2)  查询前两条


更新
db.集合.update(条件:修改后的数据)
db.集合.update({_id:"1"},{username:wz})  该修改会导致直接覆盖原有的key和val 

所以 使用
db.集合.update({_id:"1"},{$set:{username:wz}})  有这个字段 就添加 没有就新增这个字段 不对已有字段进行更改  


删除
db.集合.remove(条件)    按照条件删除
db.集合.remove(“name”:“zhangsan”) 

db.集合.remove({})  清空数据库!! 


统计条数
db.集合.count()
db.集合.count(条件) 


模糊查询 通过正则表达式实现
/要进行模糊查询的字符串/   (这是一个正则表达式)
db.集合.find({“key”:/关键字/}) 

大于、小于、不等于
不支持> < !=  <= >= 等符号
db.集合.find({“key”:{$gt:val}}) 
db.集合.find({“key”:{$lt:val}})
db.集合.find({“key”:{$gte:val}})  大于等于
db.集合.find({“key”:{$lte:val}})  小于等于
db.集合.find({“key”:{$ne:val}})   不等于


包含、不包含
in/nin 
db.集合.find({“key”:{$in:["val1","val2"]}})  包含
db.集合.find({“key”:{$nin:["val1","val2"]}})  不包含

条件连接
and
db.集合.find({“key”:{$and:[{"key1":"val1"},{"key2":"val2"}]})  并且

or
db.集合.find({“key”:{$or:[{"key1":"val1"},{"key2":"val2"}]})   或者


列值增长
对某列值在原有值基础上进行增加或者减少   可以使用$inc 运算符
db.集合.update({_id:"1"},{$inc:{age:1}})  对id为1这个数据 年龄+1 
db.集合.update({_id:"1"},{$inc:{age:-10}}) 对id为1这个数据 年龄-10


可视化图形

robomongo

官网 robomongo.org

Mongo-driver

是官方退出的java连接mongodb的驱动包 类似于JDBC驱动

1.导包


2.编码

1.new MongoDB  指定端口和ip
2.选择 数据库
3.选择 集合
4.开始对该集合进行相关操作
5.释放资源,对MongoDB对象进行关闭操作 


查询:
要使用bson对象来封装
提供
BasicDBObject bson = new BasicDBObject(key,value)
BasicDBObject bson = new BasicDBObject(map)
来封装数据


新增:
new Map
new Document(map)
调用insertOne/Many(document)  //新增
    
    
修改:
BasicDBObject bson = new BasicDBObject(key,value) 修改条件 如 id : 1
BasicDBObject bson = new BasicDBObject("$set",new document("key","val")) 修改值   如 $set;
调用updateOne/Many(条件,修改目标)    //最好使用$set 来定义修改目标,否则在原目标上覆盖
    
    
    
删除:
BasicDBObject bson = new BasicDBObject(key,value) //创建条件
deleteOne/Many(bson)//执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值