初识MongoDB(一) 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: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> } )

查询待记录。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每年进步一点点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值