广告
返回顶部
首页 > 资讯 > 数据库 >MySQL和MongoDB应该怎么获取数据
  • 913
分享到

MySQL和MongoDB应该怎么获取数据

2024-04-02 19:04:59 913人浏览 薄情痞子
摘要

小编给大家分享一下Mysql和mongoDB应该怎么获取数据,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  mysql是关系型

小编给大家分享一下MysqlmongoDB应该怎么获取数据,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

  mysql是关系型数据库中的明星,MonGoDB是文档型数据库中的翘楚。Mysql和MongoDB两种存储工具,分别进行了数据库结构设计,在MongoDB的设计上,利用了MongoDB的schema-free的特性。下面编程网小编来讲解下MySQL和MongoDB应该如何获取数据?

  MySQL和MongoDB应该如何获取数据

  MySQL是关系型数据库中的明星,MongoDB是文档型数据库中的翘楚。下面通过一个设计实例对比一下二者:假设我们正在维护一个手机产品库,里面除了包含手机的名称,品牌等基本信息,还包含了待机时间,外观设计等参数信息,应该如何存取数据呢?

  如果使用MySQL的话,应该如何存取数据呢?

  如果使用MySQL话,手机的基本信息单独是一个表,另外由于不同手机的参数信息差异很大,所以还需要一个参数表来单独保存。

  CREATETABLEIFNOTEXISTS`mobiles`(

  `id`int(10)unsignedNOTNULLAUTO_INCREMENT,

  `name`VARCHAR(100)NOTNULL,

  `brand`VARCHAR(100)NOTNULL,

  PRIMARYKEY(`id`)

  );

  CREATETABLEIFNOTEXISTS`mobile_params`(

  `id`int(10)unsignedNOTNULLAUTO_INCREMENT,

  `mobile_id`int(10)unsignedNOTNULL,

  `name`varchar(100)NOTNULL,

  `value`varchar(100)NOTNULL,

  PRIMARYKEY(`id`)

  );

  INSERTINTO`mobiles`(`id`,`name`,`brand`)VALUES

  (1,'ME525','摩托罗拉'),

  (2,'E7','诺基亚');

  INSERTINTO`mobile_params`(`id`,`mobile_id`,`name`,`value`)VALUES

  (1,1,'待机时间','200'),

  (2,1,'外观设计','直板'),

  (3,2,'待机时间','500'),

  (4,2,'外观设计','滑盖');

  MySQL和MongoDB应该如何获取数据

  注:为了演示方便,没有严格遵守关系型数据库的范式设计。

  如果想查询待机时间大于100小时,并且外观设计是直板的手机,需按照如下方式查询:

  SELECT*FROM`mobile_params`WHEREname='待机时间'ANDvalue>100;

  SELECT*FROM`mobile_params`WHEREname='外观设计'ANDvalue='直板';

  注:参数表为了方便,把数值和字符串统一保存成字符串,实际使用时,MySQL允许在字符串类型的字段上进行数值类型的查询,只是需要进行类型转换,多少会影响一点性能。

  两条SQL的结果取交集得到想要的MOBILE_IDS,再到mobiles表查询即可:

  SELECT*FROM`mobiles`WHEREmobile_idIN(MOBILE_IDS)

  如果使用MongoDB的话,应该如何存取数据呢?

  如果使用MongoDB的话,虽然理论上可以采用和MySQL一样的设计方案,但那样的话就显得无趣了,没有发挥出MongoDB作为文档型数据库的优点,实际上使用MongoDB的话,和MySQL相比,形象一点来说,可以合二为一:

  db.getCollection("mobiles").ensureIndex({
  "params.name":1,
  "params.value":1
  });
  db.getCollection("mobiles").insert({
  "_id":1,
  "name":"ME525",
  "brand":"摩托罗拉",
  "params":[
  {"name":"待机时间","value":200},
  {"name":"外观设计","value":"直板"}
  ]
  });
  db.getCollection("mobiles").insert({
  "_id":2,
  "name":"E7",
  "brand":"诺基亚",
  "params":[
  {"name":"待机时间","value":500},
  {"name":"外观设计","value":"滑盖"}
  ]
  });
  如果想查询待机时间大于100小时,并且外观设计是直板的手机,需按照如下方式查询:
  db.getCollection("mobiles").find({
  "params":{
  $all:[
  {$elemMatch:{"name":"待机时间","value":{$gt:100}}},
  {$elemMatch:{"name":"外观设计","value":"直板"}}
  ]
  }
  });

  注:查询中用到的$all,$elemMatch等高级用法的详细介绍请参考官方文档中相关说明。

  MySQL需要多个表,多次查询才能搞定的问题,MongoDB只需要一个表,一次查询就能搞定,对比完成,相对MySQL而言,MongoDB显得更胜一筹,至少本例如此。

以上是“MySQL和MongoDB应该怎么获取数据”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL和MongoDB应该怎么获取数据

本文链接: https://www.lsjlt.com/news/55178.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL和MongoDB应该怎么获取数据
    小编给大家分享一下MySQL和MongoDB应该怎么获取数据,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  MySQL是关系型...
    99+
    2022-10-18
  • mongodb怎么读取数据
    在MongoDB中,你可以使用find()方法来读取数据。find()方法可以接收一个查询条件作为参数,返回满足条件的文档。下面是一...
    99+
    2023-09-06
    mongodb
  • python怎么读取mongodb数据
    要在Python中读取MongoDB数据,需要使用PyMongo库。首先,你需要安装PyMongo库,可以使用以下命令: pip i...
    99+
    2023-10-27
    python mongodb
  • MySQL怎么使用row_num获取前十数据
    在MySQL中,我们可以使用`ROW_NUMBER()`函数结合子查询来获取前十行数据。具体步骤如下:1. 使用子查询将查询结果按照...
    99+
    2023-08-31
    MySQL
  • php mysql怎么随机获取几条数据
    本文操作环境:Windows7系统、PHP7.1版、Dell G3电脑。php mysql怎么随机获取几条数据mysql实现随机获取几条数据的方法sql语句有几种写法:SELECT * FROM tablename ORDER BY...
    99+
    2019-07-29
    php mysql
  • MySQL中怎么获取数据库的大小
    MySQL中怎么获取数据库的大小,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1. 命令行方式前言介绍:   要知道一...
    99+
    2022-10-18
  • mysql中怎么从另一张获取数据
    这期内容当中小编将会给大家带来有关mysql中怎么从另一张获取数据,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 方法一 CREATE TABLE tmp AS SE...
    99+
    2022-10-18
  • MySQL 数据库巡检,DBA应该怎么做?
    一套正常运行的系统是一个复杂的系统工程,牵涉到主机、操作系统、网络、数据库、中间件、底层存储,还有系统的核心:应用。任何层面的故障都可能造成系统的不可用。 今天聊一聊数据库层面的巡检问题。 数据库巡检的目的:保障数据库的正常运行,保证数据的...
    99+
    2023-09-03
    数据库 网络 中间件
  • django怎么获取外键对应的数据
    在Django中,可以通过以下方法获取外键对应的数据:1. 如果外键字段在模型中被定义为`ForeignKey`,可以使用`rela...
    99+
    2023-08-11
    django
  • mongodb怎么取出百万数据
    在MongoDB中取出大量数据有多种方法,以下是一些常用的方法:1. 使用find()方法获取所有数据:使用find()方法可以获取...
    99+
    2023-09-04
    mongodb
  • PHP怎么实现获取MySQL数据库的记录数据
    这篇文章主要介绍PHP怎么实现获取MySQL数据库的记录数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!获取数据表的记录总数<phprequire 'linkConfig.php';...
    99+
    2023-06-29
  • mysql怎么获取数据库中所有表名
    在MySQL中,可以使用以下两种方法来获取数据库中所有表名。方法一:使用SHOW TABLES语句sqlSHOW TABLES;该语...
    99+
    2023-10-20
    mysql 数据库
  • java怎么获取数据库数据
    要获取数据库数据,可以使用Java的JDBC(Java Database Connectivity)技术。下面是一个使用JDBC获取...
    99+
    2023-09-14
    java 数据库
  • PyMySQL在获取数据utf-8时发生错误该怎么解决
    这篇文章给大家介绍PyMySQL在获取数据utf-8时发生错误该怎么解决,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。PyMySQL包目录下的connections.py文件1232行...
    99+
    2022-10-18
  • django怎么获取post数据
    在Django中,可以通过request对象的POST属性来获取POST数据。具体步骤如下:1. 在视图函数中引入request模块...
    99+
    2023-10-11
    django
  • python怎么获取powerbuilder数据
    要从PowerBuilder中获取数据,可以使用以下方法: 使用ODBC驱动程序连接到PowerBuilder数据库。首先,确保已...
    99+
    2023-10-24
    PowerBuilder python
  • gridview怎么获取列数据
    要获取GridView中的列数据,可以使用以下方法之一:1. 通过行索引和列索引来获取单元格的值:```string value =...
    99+
    2023-09-11
    girdview
  • java怎么获取formdata数据
    在Java中,可以使用Servlet来获取FormData数据。具体步骤如下: 在Servlet中使用HttpServletRe...
    99+
    2023-10-23
    java
  • React 中怎么获取数据
    今天就跟大家聊聊有关React 中怎么获取数据,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 使用生命周期方法请求数据应用程序Employees...
    99+
    2022-10-19
  • React中怎么获取数据
    本篇内容介绍了“React中怎么获取数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!   在执行I/O...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作