第四章 查询语句:MongoDb VS MySql 4.2

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

Conditional Operators

<, &lt;=, >, &gt;=,$ne,$in,$nin, $mod

$gt:greater than &gt;

    $lt:less than <

     $gte:greater than or equal to >=

     $lte:less than or equal to <=

$ne: not equals !=

$in:select * from schedule where competitionStatus in (1,2,3);

    

应用示例:

&lt;, &lt;=, >, &gt;=,$ne:

query.put("competitionStatus", new BasicDBObject("$gt", 0)); 

// e.g. find all where competitionStatus &gt; 0

$in,$nin:

List inList = new ArrayList<Object>();

    inList.add("ATM401101");

    inList.add("ATM053101");

query.put("rsc"new BasicDBObject("$in", inList)); 

// e.g. find all where rsc in (ATM401101, ATM053101)

$mod特殊写法

按照文档:db.things.find( { a : { $mod : [ 10 , 1 ] } } )

List inList = new ArrayList<Object>();

    inList.add(12);

    inList.add(1);

query.put("competitionStatus"new BasicDBObject("$mod", inList));

这种写法失败,修改为:

System.out.println("-----------华丽分隔线mod---------------");

System.out.println("

SELECT rsc,startDate,startTime, competitionStatus FROM schedule WHERE competitionStatus/12=1

order by startDate asc,startTime asc");

    startTime = System.currentTimeMillis();  

    query = new BasicDBObject();

query.put("$where""function() { return this.competitionStatus/12

== 1; }");//这种写法成功

field = new BasicDBObject();

    field.put("rsc",true);

    field.put("startDate",true);

    field.put("startTime",true);

    field.put("competitionStatus",true);

    sort = new BasicDBObject();

    sort.put("startDate", 1);

    sort.put("startTime", 1);

    cur = coll.find(query,field).sort(sort); 

    System.out.println("查询获得的长度"+cur.count());

System.out.println("查询耗

时:"+(System.currentTimeMillis()-startTime)+"毫秒.");

showAllDataFromCursor(cur);

$exists

Check for existence (or lack thereof) of a field.

Currently $exists is not able to use an index. Indexes on other fields are still used. 

System.out.println("-----------华丽分隔线---------------");

    System.out.println("SELECT count(isGold) FROM schedule");

    startTime = System.currentTimeMillis();  

    query = new BasicDBObject();

    query.put("isGold"new BasicDBObject("$exists"true));

    System.out.println(coll.find(query).count()); 

System.out.println("查询耗

时:"+(System.currentTimeMillis()-startTime)+"毫秒.");

$or

System.out.println("-----------华丽分隔线---------------");

System.out.println("

SELECT rsc,startDate,startTime, competitionStatus FROM schedule

WHERE competitionStatus=14 or rsc='ARM102' order by startDate

asc,startTime asc limit 10");

    startTime = System.currentTimeMillis();  

    query = new BasicDBObject();

query.put("$where""function() { return

this.competitionStatus==14

|| this.rsc=='ARM102'; }"); 

    field = new BasicDBObject();

    field.put("rsc",true);

    field.put("startDate",true);

    field.put("startTime",true);

    field.put("competitionStatus",true);

    cur = coll.find(query,field).sort(sort).limit(10);  

    System.out.println("查询获得的长度"+cur.count());

System.out.println("查询耗

时:"+(System.currentTimeMillis()-startTime)+"毫秒.");

showAllDataFromCursor(cur);

mysql between

System.out.println("-----------华丽分隔线---------------");

System.out.println("SELECT rsc,startDate,startTime FROM schedule

WHERE startDate between '2010-11-15' and '2010-11-17'

order by startDate asc,startTime asc");

    startTime = System.currentTimeMillis();  

    query = new BasicDBObject();

    inList = new ArrayList<Object>();

    inList.add(12);

    inList.add(1);

query.put("$where""function() { return this.startDate

&gt;='2010-11-15' && this.startDate&lt;='2010-11-17';}");

    field = new BasicDBObject();

    field.put("rsc",true);

    field.put("startDate",true);

    field.put("startTime",true);

    sort = new BasicDBObject();

    sort.put("startDate", 1);

    sort.put("startTime", 1);

    cur = coll.find(query,field).sort(sort).limit(10); 

    System.out.println("查询获得的长度"+cur.count());

System.out.println("查询耗

时:"+(System.currentTimeMillis()-startTime)+"毫秒.");

showAllDataFromCursor(cur);


本文转自jooben 51CTO博客,原文链接:http://blog.51cto.com/jooben/350751

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
2月前
|
关系型数据库 MySQL 索引
MySQL的全文索引查询方法
【8月更文挑战第26天】MySQL的全文索引查询方法
39 0
|
2月前
|
自然语言处理 关系型数据库 MySQL
MySQL MATCH 匹配中文 无法查询的问题如何处理?
【8月更文挑战第27天】MySQL MATCH 匹配中文 无法查询的问题如何处理?
140 62
|
20天前
|
SQL 缓存 关系型数据库
MySQL高级篇——关联查询和子查询优化
左外连接:优先右表创建索引,连接字段类型要一致、内连接:驱动表由数据量和索引决定、 join语句原理、子查询优化:拆开查询或优化成连接查询
MySQL高级篇——关联查询和子查询优化
|
22天前
|
SQL 关系型数据库 MySQL
MySQL查询(万字超详细版)
本文详细介绍了数据库中的单表和多表查询方法。首先,单表查询包括全列查询、指定列查询及去重查询,其中应避免使用`*`以提高效率。接着,文章讲解了排序查询,包括升序和降序,并展示了如何通过多个字段进行排序。在多表查询部分,本文解释了内连接、外连接(左外连接和右外连接)以及自连接的概念和用法,提供了丰富的代码示例
24 1
MySQL查询(万字超详细版)
|
4天前
|
存储 关系型数据库 MySQL
MySQL索引失效及避免策略:优化查询性能的关键
MySQL索引失效及避免策略:优化查询性能的关键
18 3
|
6天前
|
关系型数据库 MySQL 数据库
MySQL 表的CRUD与复合查询
【9月更文挑战第26天】本文介绍了数据库操作中的 CRUD(创建、读取、更新、删除)基本操作及复合查询。创建操作使用 `INSERT INTO` 语句插入数据,支持单条和批量插入;读取操作使用 `SELECT` 语句查询数据,可进行基本查询、条件查询和排序查询;更新操作使用 `UPDATE` 语句修改数据;删除操作使用 `DELETE FROM` 语句删除数据。此外,还介绍了复合查询,包括连接查询(如内连接、左连接)和子查询,以及聚合函数与分组查询,并提供了示例代码。
|
9天前
|
关系型数据库 MySQL 数据库
Python MySQL查询返回字典类型数据的方法
通过使用 `mysql-connector-python`库并选择 `MySQLCursorDict`作为游标类型,您可以轻松地将MySQL查询结果以字典类型返回。这种方式提高了代码的可读性,使得数据操作更加直观和方便。上述步骤和示例代码展示了如何实现这一功能,希望对您的项目开发有所帮助。
28 4
|
12天前
|
NoSQL 关系型数据库 MySQL
当Redis与MySQL数据一致性校验中Redis数据量小于MySQL时的全量查询处理方法
保持Redis和MySQL之间的数据一致性是一个需要细致规划和持续维护的过程。通过全量数据同步、建立增量更新机制,以及定期执行数据一致性校验,可以有效地管理和维护两者之间的数据一致性。此外,利用现代化的数据同步工具可以进一步提高效率和可靠性。
34 6
|
9天前
|
关系型数据库 MySQL
mysql查询速度慢怎么解决?
mysql查询速度慢怎么解决?
31 2
|
9天前
|
关系型数据库 MySQL
mysql & clinkhouse之查询 行拼接
mysql & clinkhouse之查询 行拼接
mysql & clinkhouse之查询 行拼接
下一篇
无影云桌面