前言
技术是用来解决实际问题的,不能解决实际问题的技术都是耍流wang
所以我们今天就模拟一个实际的问题,看看用自己的思路是否能使用mongodb解决实际的问题
模拟一个场景……
有一个场景,譬如:我们要统计一个商场人的流量,所以我们来使用mongodb实现这样一个场景。
需要以下几个元素:
- 商场
- 人
- 进出商场的记录
如果用关系型数据库思维的方式的话,将是下面一种样子:
那我们就用上面的例子,使用mongodb,实现这样一个功能;
创建实体类、并造数据……
那么,第一步,我们就需要创建实体类; (终于不用创建数据表了,很shuang有木有?)
这几个类是不是很简单?
我们开始造几个商场,再造几个人😀
造数据的时候,发现有这么多API,这么多的参数,究竟是干啥的?如果想知道该怎么找呢?
当然是去看官方文档或者去看源代码,这就是开源的好处~~~ go, 这就去
搞不懂这些每个API的区别和作用总感觉自己是再ben ben的干活
通过分析这个API, 发现我们正需要造多条数据,可以试试批量插入的这个操作
程序写好了,跑一下了, 结果报错了。
以为一个很简单的问题,网上搜了一下也没有明确的结果。
又仔细检查了使用了insert的这个API,竟然使用的下面的API
难怪会出错
所以仔细检查一下, 批量cha入的方法,原来要指定第二个参数,cha入的类型。
或者使用insertAll方法
不报错了, 去数据库里看看去
数据也OK了。
开始造数据人……
接下来就该继续造 人了
造人的逻辑也写好了,执行的时候不出所料,果然报错了。你知道错在哪里吗?
很显然,相同的位置造不出第二个同样的商场, 但是造商场数据的逻辑也不想删掉,怎么办?
算了, 注释掉吧。 <已经尝试过upsert的方法,但是不太好用>
人造的还不错吧?
接下来就造进出记录……
譬如,一个Jimmy现在去了浦东mall North 汇dian,我们来造一下
数据制造好, 也保存好了,但是你有米有疑问?
这次虽然数据保存的比较顺利,但是我却有很多的疑问。
- 这ID每次都要自己设置,如何实现自增?
- 数据保存到数据库了,不过你有没有发现,商场和人有重复的数据?
- 现在数据少还行,如果有很多的字段,就会产生很多冗余的数据,该如何解决这个问题呢?
目前为了ID不重复的问题, 把他改成UUID试试;
改造完成,就让Jimmy反复的进出商场吧。
最重要的总结
- 我们用到了批量新增的方法 insertAll
- 用到了查询的方法 findById
- 用到了另外一种查询的方法 find(Query.query(Criteria.where("id").is(1)), ShoppingMall.class)
- 用到了save方法,实现数据的新增或更新
当然没有问题的程序员不是好程序员,疑问如下:
- 这ID每次都要自己设置,如何实现自增?
- 数据保存到数据库了,不过你有没有发现,商场和人有重复的数据?
- 现在数据少还行,如果有很多的字段,就会产生很多冗余的数据,该如何解决这个问题呢?
..................................
近两年,以“斜杠青年”这个标签自居的人好像没那么多了,但我们却发现,身边的很多人好像都有“另一个身份”,这个身份与他的本职工作也许无关,却常出现在下班后、分组可见的朋友圈、与私密朋友的饭局里。保持一个“小而美”的状态就不错,“斜杠青年”是如何开启副业的?
商场和人的重复数据,但是进出时间是不一样啊,这些都可以后期用来分析客户习惯