使用背景:

项目中需要存储一些下游的需求,需求的的格式是个树形的格式,例如某个需求里面包含n个城市某个品牌某个车系,可以简化成下图。(只是作为使用场景来分析,可以跳过)

按照关系型数据库来说的话,有两种方案:

1 需要3张表来实现下面的机构需要需求表存储需求的基本信息,需求和城市的关联表(一个需求对多个城市),需求、城市、车系的关联关系表(一个城市的某个需求下面有多个车系)。

2 一张表存储:一个需求对应多行记录,每行记录中的最小粒度是城市,城市中的车系用逗号拼接。如下图:

需求id 城市id 车系
需求1 城市1 车系1,车系2
需求1 城市2 车系1

缺点:如果使用第一种的话,会很麻烦,需要建3张表,需要做关联查询,数据有很多冗余的;使用第二种的话,由于存在车系1,车系2这种存储,如果根据车系进行查询的话,需要使用find_in_set函数,如果数据量在比较大的情况下,性能是个大问题。

对于这种数据,所以决定选择使用mongodb来进行存储。如果多个城市或者多个车系的话,使用mongo种的array来进行存储。

基本操作

由于项目是使用spring data mongodb来进行的crud操作,基本的操作都已经做了封装,确实是可以对mongodb的语法进行屏蔽,但是对于一些复杂性的查询,以及一些索引的建立,还是需要对mongodb的语句等各方面的东西进行了解的。所以先翻看了一下菜鸟教程,希望能最快速的掌握基础及常用的语法,以便后续查看,后续再对一些高级的东西进行补充。

  • mongodb连接串:

mongodb://fred:foobar@localhost/baz 使用用户名fred,密码foobar登录localhost的baz数据库。

  • 数据库相关

use jxt 创建数据库 jxt ,如果该数据库已经存在,则切换到这个数据库。可以通过show dbs来查看所有的数据库,此时是显示不出来这个数据库的, 要显示它,我们需要向 jxt 数据库插入一些数据。

如果需要删除jxt数据库的话,需要切换到jxt这个数据库,通过db查看当前所在的数据库,如果不是的话,可以通过use jxt 切换到数据库jxt,通过db.dropDatabase()来删除当前的数据库。

  • 表相关(collection)

创建表的话,可以通过db.createCollection(name, options) 来创建,但是一般情况下我们是不需要手动创建的,直接插入数据的时候会自动创建相应的表。手动创建的时候可以在name中指定表的名字,options中配置一些参数。如下:

db.createCollection("mycol", { capped : true, autoIndexId : true, size : 6142800, max : 10000 } )

创建固定大小的表 mycol,整个集合空间大小 6142800 KB, 文档最大个数为 10000 个。下面是参数的解释:

删除表:db.mycol2.drop() 其中mycol2为表名。

插入数据:db.collection.insertOne() 和 db.collection.insertMany()。 一个是插入一条,一个是插入多条,插入多条的时候数据是一个数组。

更新数据:db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> } );例如:db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})  会将title=MongoDB 教程 数据改为MongoDB。

删除数据:db.collection.remove( <query>, { justOne: <boolean>, writeConcern: <document> } )

查询待记录。。。

初识MongoDB(一) mongodb基本操作相关推荐

  1. MongoDB数据表基本操作

    MongoDB数据表基本操作 查看全部数据表 > use ChatRoom switched to db ChatRoom > show collections Account Chat ...

  2. 二、MongoDB简介及基本操作

    mongodb是一个基于文档的强大.灵活.易于扩展的通用型数据库.是基于分布式文件存储的数据库.其由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. mongodb也是一个 ...

  3. MongoDB:mongodb在项目开发时的安全验证、分页查询操作

    MongoDB:mongodb在项目开发时的安全验证.分页查询操作. 对于数据库而言,在项目应用中都需要安全验证,不然,就会报错,呵呵-- 现在贴出来我在项目中是怎么做的. 原创文章,转载请注明出处: ...

  4. BigData之MongoDB:MongoDB基于分布式文件存储数据库的简介、下载、案例应用之详细攻略

    BigData之MongoDB:MongoDB基于分布式文件存储数据库的简介.下载.案例应用之详细攻略 目录 MongoDB的简介 1.MongoDB的主要功能特性 2.对MongoDB进行增删改查( ...

  5. PHP mongodb运用,MongoDB在PHP下的应用学习笔记

    1.连接 mongodb默认端口是:27017,因此我们连接mongodb:$mongodb = new Mongo('localhost') 或者指定IP与端口 $mongodb = new Mon ...

  6. 安装MongoDB Install MongoDB on Ubuntu

    MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和 非关系数据库之间的产品,是非关系数据库当中 ...

  7. golang常用库之-mgo.v2包、MongoDB官方go-mongo-driver包、七牛Qmgo包 | go操作mongodb、mongodb bson

    文章目录 golang常用库之-mgo.v2包.MongoDB官方go-mongo-driver包.七牛Qmgo包 | go操作mongodb.mongodb bson 一.[不推荐]mgo.v2包 ...

  8. 已解决(MongoDB安装报错)Service ‘MongoDB Server (MongoDB)’ (MongoDB) failed tostart. Verify that you have su

    成功解决(MongoDB安装报错):Service 'MongoDB Server (MongoDB)' (MongoDB) failed tostart. Verify that you have ...

  9. Service MongoDB Server( MongoDB( MongoD8) failed to start. Verify that you have sufficient priilege

    报错:Service MongoDB Server( MongoDB( MongoD8) failed to start. Verify that you have sufficient priile ...

  10. mongodb 服务器性能监控,mongodb监控 | mongodb数据库监控 - ManageEngine Applications Manager...

    MongoDB监控 MongoDB是否一个非关系型数据库,用来快速开发并支持大量数据处理和存储.非关系型数据库,例如MongoDB和Cassandra,可以让应用没有限制的使用,极大地扩展了业务架构的 ...

最新文章

  1. 中国研究的超级系统计算机,学习电脑 - Book3 - V1.30 - 超级系统恢复
  2. jmeter测试java代码
  3. 设置npm的registry
  4. java final类的写法_重拾JavaSE基础——抽象类、接口、代码块、final和枚举
  5. linux下什么文件不能修改,Linux和Unix下root也不能修改文件与目录的命令
  6. LRN和Batch Norm
  7. python ckeditor上传图片400错误_又一款python开发神器
  8. struct和typedef struct区别
  9. Redis再入门 codis 对比 Memcached
  10. 三个等于号===和两个等于号==的区别
  11. 机器学习-ID3决策树算法(附matlab/octave代码)
  12. WPF/Silverlight 控件的几幅继承关系图
  13. 章节十一、1-Junit介绍
  14. 最经典25本Python编程开发电子书精粹
  15. 开心网“卖身”:错过转型时机,逆水行舟,不进则退
  16. SpringBoot 启动时自动执行代码的几种方式
  17. ETF定投的均线偏离策略分析
  18. 地铁客流量分析可视化演示系统(附代码)
  19. がいねんとれいさいのにちじょう
  20. 基于html5手机移动端对话框特效

热门文章

  1. tinymce富文本编辑器扩展插件-设置段落间距
  2. 为什么要学习 Linux?
  3. RFID固定资产管理系统更好更快捷的掌握资产情况 资产盘查好帮手
  4. 微卡认证系统使用手册
  5. 7-3 干支纪年法 (100 分)
  6. java大括号定义数组_Java基础语法_数组
  7. 布局布线流程的10大步骤
  8. 2022年全球市场薄膜厚度测量系统总体规模、主要生产商、主要地区、产品和应用细分研究报告
  9. java,mqtt-client开发创建客户端
  10. 五年企稳上升的阿里,还能再涨吗?