美文网首页
MongoDB-序

MongoDB-序

作者: 许先森的许 | 来源:发表于2018-11-13 10:41 被阅读2次

NOSql :not only sql

显示开发中一直存在一个问题:

数据表 — JDBC读取 — POJO(VO/PO) — 控制层转化为JSON数据 — 客户端这样的转换实在是太麻烦了。最好的是直接有一个数据库就存放要显示的JSON数据,就省去了所有要转换的过程。
所以在实际的开发中,往往除了关系型数据库之外还要提供NOSql数据库,其中NOSql数据库负责数据的读取,因为直接保存的就是JSON(前提是:MongoDB中的数据是排列好的组合 数据)
在MongoDB数据库中与Oracle数据库有如下的概念对应

image.png
MongoDB之所以能够更好的发展也取决于:面向集合的存储过程、模式自由(无模式)、方便的进行数据的存储扩充。支持索引、支持短暂数据保留、具备完整的数据库状态监控、基于BSON应用
安装和配置:

https://www.mongodb.com/
配置环境变量

  • 启动:

mongod --dbpath /Users/xuchun/Downloads/mongodb-osx-x86_64-4.0.4/db (普通启动)
mongod --dbpath /Users/xuchun/Downloads/mongodb-osx-x86_64-4.0.4/db —port=27001(带端口号启动)
mongod -f /Users/xuchun/Downloads/mongodb-osx-x86_64-4.0.4/mongodb.conf (配置文件启动)

  • 连接:mongo
  • 查询所有数据库:show databases
  • 切换到admin数据库:use admin
  • 关闭数据库服务:shutdownServer()
基础操作:
  • 使用mldn数据库 : use mldn

这个时候并不会创建数据库,只有在数据库中保存数据集合之后才能真正创建数据库

  • 创建集合(表):db.createCollection('emp') //创建一张emp名称的表 这个时候mldn数据库才会真正的存在
  • 如果按照以上代码形式进行,会觉得你不正常。。。一般使用时都会直接向里面保存一个数据
  • 创建集合(表)并插入一条数据: db.dept.insert({‘deptno’:10,’dname’:’xc’,’loc’:’北京’})

输出结果:WriteResult({ "nInserted" : 1 })

查询这张表:db.dept.find()

输出结果:{ "_id" : ObjectId("5be8eab516d1fcb72bc0dd34"), "deptno" : 10, "dname" : "xc", "loc" : "北京" }

  • 查看所有集合(表):show collections
  • 查询集合中数据:db.表名.find()

从传统数据表来(集合就相当于表的结构),表的结构一旦定义就必须按照其定义的要求进行内容的编写,mongodb不一样,可以自己随意扩充数据。

  • 增加不规则数据 :比如dept表结构不算_id有3个字段,那么我们多存入字段来看一下:
var deptData = {
'deptno':11,
'dname':'杭州',
'loc':'杭州',
'count':199
}

db.dept.insert(deptData)//输出:WriteResult({ "nInserted" : 1 })

db.dept.find()

输出:

{ "_id" : ObjectId("5be8eab516d1fcb72bc0dd34"), "deptno" : 10, "dname" : "xc", "loc" : "北京" }

{ "_id" : ObjectId("5be8eccb16d1fcb72bc0dd35") }

{ "_id" : ObjectId("5be8edfd16d1fcb72bc0dd36"), "deptno" : 11, "dname" : "杭州", "loc" : "杭州", "count" : 199 }

数据插入成功,即使表结构改变了

所以mongodb数据库绝对不可能存在查询集合结构的操作,因为它无模式

插入数组:

db.infos.insert([{"url" : "www.baidu.com"},{"url" : "www.hh.cn"}])

如果保存10000个数据?就是用js语法!非常好用

for(var i = 0;i<10000; i++){
    db.infos.insert({‘url’ : ‘http://www.yyy.com’+i})
}

如果数据保存很多的情况下,列表查询完展示时不会全部列出,只会列出部分内容,传统数据库会全部列出。。。

  • 关于ID的问题

每一行数据会自动生成_id,值组成结构:时间戳+机器码+PID+计数器 值绝对不会重复。是mongdb数据库自己生成的,不可被改变。

  • 删除数据

db.dept.remove({"_id" : ObjectId("5be8eab516d1fcb72bc0dd34")}) 输出:WriteResult({ "nRemoved" : 1 })

db.dept.find() 输出:{ "_id" : ObjectId("5be8eccb16d1fcb72bc0dd35") }

{ "_id" : ObjectId("5be8edfd16d1fcb72bc0dd36"), "deptno" : 11, "dname" : "杭州", "loc" : "杭州", "count" : 199 }

  • 更新数据:db.dept.update(更新的那一条,更新的内容)

例子:

var deptData = {
'deptno':11,
'dname':'杭州',
'loc':'杭州',
'count':199
}

db.dept.update({"_id" : ObjectId("5be8eab516d1fcb72bc0dd34”}, deptData)

可以看出更新功能比较麻烦。

  • 删除集合(表):db.集合名称.drop() 输出:true 在查询集合就看不到这张表了

  • 删除数据库: db.dropDatabase() 删除当前所在数据库 输出:{ "dropped" : "mldn", "ok" : 1 }

热身完毕,学习下一章《查询》

相关文章

  • MongoDB-序

    NOSql :not only sql 显示开发中一直存在一个问题: 数据表 — JDBC读取 — POJO(V...

  • MongoDB-基础使用(二)

    前置文章:MongoDB-基础使用(一)[https://www.jianshu.com/p/7bca353127...

  • MongoDB-基础使用(三)

    前置文章:MongoDB-基础使用(一)[https://www.jianshu.com/p/7bca353127...

  • Mongodb-主从

    docker inspect --format '{{ .NetworkSettings.IPAddress }}...

  • MongoDB-更新

    提供了两类函数:save()、update()update函数语法要求比较麻烦:db.集合.update(更新条件...

  • MongoDB-查询

    任何数据库中查询都是最麻烦的,在MongoDB中对于查询的支持非常到位,有关系运算,逻辑运算,数组运算等等首先对于...

  • MongoDB-基础

    在了解了SpringData JPA 对MongoDB的封装之后,觉得还是有必要了解一下MongoDB本身的基础操作

  • MongoDB-简介

    MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。MongoDB 旨在为WEB应用提...

  • mongodb-基础

    第1章 关系型与非关系型 第2章 mongo和mysql数据对比 第3章 MongoDB特点 第4章 mongo应...

  • mongodb 数据库 安装步骤

    SQL- 结构化查询语言- 关系数据库全都同SQL来操作 1.安装MongoDB- 安装- 配置环境变量C:\Pr...

网友评论

      本文标题:MongoDB-序

      本文链接:https://www.haomeiwen.com/subject/hkekfqtx.html