Mongodb进阶探索蜿蜒崎岖的路途之人流量数据收集~

martinzh 发布于 2019/09/30 20:23
阅读 298
收藏 0

前言

技术是用来解决实际问题的,不能解决实际问题的技术都是耍流wang

所以我们今天就模拟一个实际的问题,看看用自己的思路是否能使用mongodb解决实际的问题

模拟一个场景……

有一个场景,譬如:我们要统计一个商场人的流量,所以我们来使用mongodb实现这样一个场景。

需要以下几个元素:

  1. 商场
  2. 进出商场的记录

如果用关系型数据库思维的方式的话,将是下面一种样子:

那我们就用上面的例子,使用mongodb,实现这样一个功能;

创建实体类、并造数据……

那么,第一步,我们就需要创建实体类; (终于不用创建数据表了,很shuang有木有?)

这几个类是不是很简单?

 

我们开始造几个商场,再造几个人😀

造数据的时候,发现有这么多API,这么多的参数,究竟是干啥的?如果想知道该怎么找呢?

当然是去看官方文档或者去看源代码,这就是开源的好处~~~ go, 这就去

搞不懂这些每个API的区别和作用总感觉自己是再ben ben的干活

通过分析这个API, 发现我们正需要造多条数据,可以试试批量插入的这个操作

程序写好了,跑一下了, 结果报错了。

以为一个很简单的问题,网上搜了一下也没有明确的结果。

又仔细检查了使用了insert的这个API,竟然使用的下面的API

难怪会出错

所以仔细检查一下, 批量cha入的方法,原来要指定第二个参数,cha入的类型。

或者使用insertAll方法

不报错了, 去数据库里看看去

数据也OK了。

开始造数据人……

接下来就该继续造 人了

造人的逻辑也写好了,执行的时候不出所料,果然报错了。你知道错在哪里吗?

很显然,相同的位置造不出第二个同样的商场, 但是造商场数据的逻辑也不想删掉,怎么办?

算了, 注释掉吧。 <已经尝试过upsert的方法,但是不太好用>

人造的还不错吧?

 

接下来就造进出记录……

 

譬如,一个Jimmy现在去了浦东mall North 汇dian,我们来造一下

 

数据制造好, 也保存好了,但是你有米有疑问?

这次虽然数据保存的比较顺利,但是我却有很多的疑问。

  1. 这ID每次都要自己设置,如何实现自增?
  2. 数据保存到数据库了,不过你有没有发现,商场和人有重复的数据?
    1. 现在数据少还行,如果有很多的字段,就会产生很多冗余的数据,该如何解决这个问题呢?

 

目前为了ID不重复的问题, 把他改成UUID试试;

改造完成,就让Jimmy反复的进出商场吧。

 

最重要的总结

  1. 我们用到了批量新增的方法 insertAll
  2. 用到了查询的方法 findById
  3. 用到了另外一种查询的方法 find(Query.query(Criteria.where("id").is(1)), ShoppingMall.class)
  4. 用到了save方法,实现数据的新增或更新

 

当然没有问题的程序员不是好程序员,疑问如下:

  1. 这ID每次都要自己设置,如何实现自增?
  2. 数据保存到数据库了,不过你有没有发现,商场和人有重复的数据?
    1. 现在数据少还行,如果有很多的字段,就会产生很多冗余的数据,该如何解决这个问题呢?

 

加载中
0
f
freezingsky

..................................

martinzh
martinzh
0
h
hardwell

近两年,以“斜杠青年”这个标签自居的人好像没那么多了,但我们却发现,身边的很多人好像都有“另一个身份”,这个身份与他的本职工作也许无关,却常出现在下班后、分组可见的朋友圈、与私密朋友的饭局里。保持一个“小而美”的状态就不错,“斜杠青年”是如何开启副业的

0
善友

商场和人的重复数据,但是进出时间是不一样啊,这些都可以后期用来分析客户习惯

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部