初识MongoDB(一) mongodb基本操作_db.mycol2.drop()_每年进步一点点的博客-程序员秘密

技术标签: 数据库  mongodb  

使用背景:

项目中需要存储一些下游的需求,需求的的格式是个树形的格式,例如某个需求里面包含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:[email protected]/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> } )

查询待记录。。。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38008721/article/details/108897604

智能推荐

delphi Fastreport_qq_18932003的博客-程序员秘密

https://www.cnblogs.com/cyzgg/category/1445144.htmlFastReport4.6程序员手册_翻译摘要:一、使用TfrxReport 组件工作1、加载并存储报表默认情况下,报表窗体同项目窗体构存储在同一个DFM文件中。多数情况下,无须再操作,因而你就不必采用特殊方法加载报表。如果你决定在文件中存储报表窗体或者是数据库的Blob字段(他提供了非常...

【教程】Matrikon OPC使用教程连载(一)_chongji1953的博客-程序员秘密

MatrikonOPC介绍: Matrikon是基于OPC UA和基于OPC的控制自动化数据互操作性产品的供应商,提供自动化厂商的高级OPC UA开发工具包,适用于从嵌入式设备到云应用的所有产品线。对于终端用户客户,Matrikon提供了关键数据工具,以最好地促进企业广泛的数据共享。产品主...

SpringBoot使用Jsoup处理Xss攻击,包括RequestBody处理_weixin_34232617的博客-程序员秘密

2019独角兽企业重金招聘Python工程师标准&gt;&gt;&gt; ...

Redis漏洞利用的4种方法_zxl2605的博客-程序员秘密

Redis简介 redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更

学习记录:js深拷贝、浅拷贝_YoHoo-2020的博客-程序员秘密

js 的数据类型有两种,一种是基本数据类型(String、Number、Boolean、Null、Undefined、Symbol),一种是引用数据类型(Object、Array、Function)。基本数据类型是放在栈内存的,而引用数据类型是存放在堆内存的,它会在栈内存里面存放一个指向堆内存的指针。所以,浅拷贝只复制指向某个对象的指针,而不是复制对象本身,新旧对象还是共享同一块内存,深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象。// 如果只是简单的数组对象,

Vxwoks系统入门知识学习(一)_vx系统入门学习_steven_well的博客-程序员秘密

今天学习了一下VX系统的一些知识,把新认识的知识点记录下。1、任务管理任务结构、任务状态、任务调度。1.1 任务状态:实时系统的一个任务可有多种状态,其中最基本的状态有四种:就绪态:任务只等待系统分配CPU资源;悬置态:任务需等待某些不可利用的资源而被阻塞;休眠态:如果系统不需要某一个任务工作,则这个任务处于休眠状态;延迟态:任务被延迟时所处状态;  当系统

随便推点

QGraphicsItem::scenePos() 总是返回QPointF(0,0)_Kelvin_Ngan的博客-程序员秘密

源:https://www.qtcentre.org/threads/22633-Why-does-QGraphicsItem-scenePos()-return-(0-0)问题来源:在QGraphicsScene中获取某个item的位置,item定义为QGraphicsEllipseItem对象,希望通过item的scenePos方法获得item在scene中的位置,结果总是返回(0,0)...

ER_BAD_FIELD_ERROR: Unknown column .id in field list的解决_er_bad_field_error: unknown column 'popaddress' in_宛Wan的博客-程序员秘密

这个问题简直与那个数据库表名多了一个think有异曲同工之妙,terminal中显示的报错为Unknown column ‘think_chap_name.id’ in ‘field list’,查询的sql语句在terminal中显示的是SELECT COUNT(think_chap_name.id) AS think_count FROM think_chap_name LIMIT 1,???官方文档中显示的案例就是let data = await model.page(this.get(‘pa

基于MDK创建STM32 汇编程序:串口输出Hello windows_傻瓜小汤圆的博客-程序员秘密

一、编写代码1.创建新的工程并且编写代码注意:不用勾选CORE和Startup创建完工程后,添加 asm 汇编文件,然后添加下面的代码;;RCC寄存器地址映像 RCC_BASE EQU 0x40021000 RCC_CR EQU (RCC_BASE + 0x00) RCC_CFGR EQU (RCC_BASE + 0x04) RCC_CIR ...

signature=e43282537cb3a3f05d7b7bde177a2fb8,yarn.lock_非著名程序员�m~~的博客-程序员秘密

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.# yarn lockfile v1"@types/commander@^2.11.0":version "2.12.2"resolved "http://registry.npm.taobao.org/@types/commander/download/@types/c...

遇到问题-----mongodb-------Uncaught TypeError: Cannot read property 'value' of undefined_张小凡vip的博客-程序员秘密

前面我们了解过 在mongodb 中使用js脚本运行。mongodb执行js脚本(一)---shell执行mongodb 执行js脚本(二)---mongovue执行但是写mongodb的js脚本并不是很好调试。 只能逐句检查验证。今天遇到了一个问题。Uncaught TypeError: Cannot read property 'highStudentResultDetails' of und

Windows下Node多版本管理_kongfu_cat的博客-程序员秘密

Windows下Node多版本管理前置相关指令背景介绍GNVMGithub仓库地址特色前置相关指令查看node版本node -v查看npm版本npm-v查看gnvm版本gnvm versiongnvm查看node版本gnvm lsgnvm 更新node为最新版本gnvm update latestgnvm 更新npm为最新版本gnvm npm latest...

推荐文章

热门文章

相关标签