mongo的简单查询

100 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天,点击查看活动详情

主题简介

  • mongodb 在企业日常开发中使用的也不算罕见了,他是非关系型数据库,但是和mysql 却有着类似的功能类似的叫法,数据库-》集合-》文档 分别对应数据库的啥呢?

  • mongo中的数据库就是维护的用户权限。不同的角色使用不同的数据库,这里和我们mysql里的数据库感觉概念相同

  • 集合是mysql中没有的概念,他大概是mysql 中的表的对标叫法

  • 然后就是文档了,文档是mongo里存储数据的单元单位,实际上就是一个JSON 。 以为在mongo中你无法在将JSON 进行拆分细化了。但是JSON里还可以存储文档。

  • 还有就是在 mongo 中存储的key 值笔者这里建议还是使用驼峰模式,而不是使用下划线的形式因为它不像mybatis 的功能一样在自动下划线转驼峰的时候会出现问题。

常规使用

  • 在数据库中我们正常的操作 无非就是增删改查。那么我们开始一段查询看看。

按照字段部分排序

比如userName是uuid格式的f21bad93-bcb2-48a1-9446-d429cfb8a63d,这个时候userName中-分割的最后一部分排序即d429cfb8a63d.

sql方式

select * from user order by substr((userName),LENGTH(userName)+1-(locate('/',REVERSE(userName))-1));

  • 上述是我们解围查询,下面我们看看普通的列表查询
常规查询

mongo的常规查询只能是常规的操作。这里需求就无法满足。这就是高级查询aggregate的高级之处。他支持我们逻辑操作

高级查询
  • mongo难度还是有的,因为他需要操作JSON中部分数据。通过JSOn中部分字段当做条件进行匹配,这点就很难操作。比附我们需要操作A.B.C.D这个字段当条件。那额我们需要借助aggregate来进行协调。

高级查询中我们会发现查询出的字段只有参与排序的字段和Id字段。如何我们需要显示其他字段需要在最后一个project中将字段配置出来,如regions:1表示显示;第一个project中将字段配置出来,如regions:1表示显示;第一个project中的"userName":"$userName"表示展示userName字段。