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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:
初始化部分
System.out.println("基础初始化部分开始");
    Mongo m = new Mongo("localhost", 27017);
    // 选择数据库,如果没有这个数据库的话,会自动建立
    DB db = m.getDB("ms_basic");
    // 建立一个集合,和数据库一样,如果没有,会自动建立
    DBCollection coll = db.getCollection("leeCollection");
    DBCursor cur = null;
    long startTime = 0;
    BasicDBObject query = null;
    BasicDBObject field = null;
    BasicDBObject sort = null;
    List<Object> inList = null;
System.out.println("基础初始化部分完毕");
,,,,
   public   static   void  showAllDataFromCursor(DBCursor cur) {
     while  (cur.hasNext()) {
       System. out .println(cur.next());
     }
}
普通查询
System.out.println("-----------华丽分隔线---------------");
System. out .println( "
SELECT * FROM schedule
WHERE startDate='2010-11-18' and disciplineName='田径'
and phaseName='决赛'" );
    startTime = System. currentTimeMillis ();
    query =  new  BasicDBObject();
    query.put( "startDate" , "2010-11-18" );
    query. put ( "disciplineName" "田径" );
    query.put( "phaseName" , "决赛" );
    cur = coll.find(query);  
    System. out .println( "查询获得的长度" +cur.count());
    System. out .println( "查询耗时:" +(System. currentTimeMillis ()-startTime)+ "毫秒." );
showAllDataFromCursor (cur);
System. out .println( "-----------华丽分隔线---------------" );
    System. out .println( "SELECT * FROM schedule WHERE rsc='ATM033101'" );
    startTime = System. currentTimeMillis ();  
    query =  new  BasicDBObject();
    query.put( "rsc" , "ATM033101" );
    cur = coll.find(query);  
    System. out .println( "查询获得的长度" +cur.count());
    System. out .println( "查询耗时:" +(System. currentTimeMillis ()-startTime)+ "毫秒." );
showAllDataFromCursor (cur);
System. out .println( "-----------华丽分隔线---------------" );
System . out .println( "
SELECT * FROM schedule
order by startDate asc,startTime asc limit 2,10" );
sort =  new  BasicDBObject();
    sort.put( "startDate" , 1);
sort.put( "startTime" , 1);
    startTime = System. currentTimeMillis ();  
    cur = coll.find().sort(sort).limit(2).skip(10); 
    System. out .println( "查询获得的长度" +cur.count());
    System. out .println( "查询耗时:" +(System. currentTimeMillis ()-startTime)+ "毫秒." );
     showAllDataFromCursor (cur);
高级查询
http://www.mongodb.org/display/DOCS/Advanced+Queries
Introduction
Retrieving a Subset of Fields
$slice operator
Conditional Operators : <, &lt;=, >, &gt;=
Conditional Operator : $ne
Conditional Operator : $in
Conditional Operator : $nin
Conditional Operator : $mod
Conditional Operator: $all
Conditional Operator : $size
Conditional Operator: $exists
Conditional Operator: $type
$or
Regular Expressions
Value in an Array
Conditional Operator: $elemMatch
Value in an Embedded Object
Meta operator: $not
Javascript Expressions and $where
sort()
limit()
skip()
snapshot()
count()
group()
Special operators
See Also 
这里列举部分示例:
Regular Expressions
System. out .println( "-----------华丽分隔线---------------" );
System. out .println( "
SELECT * FROM schedule
WHERE rsc like 'ATM%'and length(rsc)=9" );
    startTime = System. currentTimeMillis ();  
    query =  new  BasicDBObject();
    query.put( "rsc" ,Pattern. compile ( "ATM[A-Z0-9]{6}" , Pattern. CASE_INSENSITIVE ));
    cur = coll.find(query);  
    System. out .println( "查询获得的长度" +cur.count());
    System. out .println( "查询耗时:" +(System. currentTimeMillis ()-startTime)+ "毫秒." );
showAllDataFromCursor (cur);
这里可以理解为: rsc like 'ATM%'and length(rsc)=9
选择固定字段
System. out .println( "-----------华丽分隔线---------------" );
    System. out .println( "SELECT rsc,startDate,startTime, competitionStatus FROM schedule WHERE competitionStatus =1  order by startDate asc,startTime asc limit 10" );
    startTime = System. currentTimeMillis ();  
    query =  new  BasicDBObject();
    query.put( "competitionStatus" , 1 ); 
    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);
相关实践学习
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
相关文章
|
22天前
|
关系型数据库 MySQL 索引
MySQL的全文索引查询方法
【8月更文挑战第26天】MySQL的全文索引查询方法
36 0
|
28天前
|
SQL 关系型数据库 MySQL
在MySQL中,什么是结构化查询语言 (SQL)
【8月更文挑战第20天】在MySQL中,什么是结构化查询语言 (SQL)
33 1
|
1月前
|
存储 关系型数据库 MySQL
mysql数据库查询时用到的分页方法有哪些
【8月更文挑战第16天】在MySQL中,实现分页的主要方法包括:1)使用`LIMIT`子句,简单直接但随页数增加性能下降;2)通过子查询优化`LIMIT`分页,提高大页码时的查询效率;3)利用存储过程封装分页逻辑,便于复用但需额外维护;4)借助MySQL变量实现,可能提供更好的性能但实现较复杂。这些方法各有优缺点,可根据实际需求选择适用方案。
122 2
|
20天前
|
自然语言处理 关系型数据库 MySQL
MySQL MATCH 匹配中文 无法查询的问题如何处理?
【8月更文挑战第27天】MySQL MATCH 匹配中文 无法查询的问题如何处理?
136 62
|
3天前
|
SQL 缓存 关系型数据库
MySQL高级篇——关联查询和子查询优化
左外连接:优先右表创建索引,连接字段类型要一致、内连接:驱动表由数据量和索引决定、 join语句原理、子查询优化:拆开查询或优化成连接查询
MySQL高级篇——关联查询和子查询优化
|
5天前
|
SQL 关系型数据库 MySQL
MySQL查询(万字超详细版)
本文详细介绍了数据库中的单表和多表查询方法。首先,单表查询包括全列查询、指定列查询及去重查询,其中应避免使用`*`以提高效率。接着,文章讲解了排序查询,包括升序和降序,并展示了如何通过多个字段进行排序。在多表查询部分,本文解释了内连接、外连接(左外连接和右外连接)以及自连接的概念和用法,提供了丰富的代码示例
20 1
MySQL查询(万字超详细版)
|
18天前
|
自然语言处理 关系型数据库 MySQL
MySQL MATCH 匹配中文 无法查询的问题如何处理?
【8月更文挑战第29天】MySQL MATCH 匹配中文 无法查询的问题如何处理?
50 6
|
18天前
|
SQL 存储 关系型数据库
mysql查询怎么用
mysql查询怎么用【8月更文挑战第31天】
18 4
|
25天前
|
JSON NoSQL MongoDB
MongoDB Schema设计实战指南:优化数据结构,提升查询性能与数据一致性
【8月更文挑战第24天】MongoDB是一款领先的NoSQL数据库,其灵活的文档模型突破了传统关系型数据库的限制。它允许自定义数据结构,适应多样化的数据需求。设计MongoDB的Schema时需考虑数据访问模式、一致性需求及性能因素。设计原则强调简洁性、查询优化与合理使用索引。例如,在构建博客系统时,可以通过精心设计文章和用户的集合结构来提高查询效率并确保数据一致性。正确设计能够充分发挥MongoDB的优势,实现高效的数据管理。
35 3
|
25天前
|
存储 NoSQL MongoDB
【掌握MongoDB】轻松精通MongoDB查询,从基础到高级一网打尽!
【8月更文挑战第24天】在数据驱动的时代,数据库的性能与灵活性对企业至关重要。MongoDB作为一种高性能、无模式的文档数据库,为开发者提供了灵活的数据存储方案。尤其在处理半结构化或多变数据时展现出强大优势。本文重点介绍MongoDB中的查询操作,包括基本查询、条件查询、复杂查询以及字段选择、排序和限制等功能。通过掌握这些基本查询技巧,开发者能够有效从MongoDB中检索数据,支持复杂的业务逻辑。
42 1