第三章 MongoDb Java应用 3.1

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:
1Java 应用示例
要使用Java操作MongoDB的话,要到官方网站下载一个驱动包,点击网站上的Drivers里面,可以看到目前支持的语言,非常的多……把包导入后,可以尝试来操作了(记得一定要开着服务器)
首先介绍一下比较常用的几个类
Mongo :连接服务器,执行一些数据库操作的选项,如新建立一个数据库等
DB :对应一个数据库,可以用来建立集合等操作
DBCollection :对应一个集合(类似表),可能是我们用得最多的,可以添加删除记录等
DBObjec :接口和BasicDBObject对象:表示一个具体的记录,BasicDBObject实现了DBObject,因为是key-value的数据结构,所以用起来其实和HashMap是基本一致的
DBCursor :用来遍历取得的数据,实现了IterableIterator
接下来实际的操作一下,代码如下:
import  java.net.UnknownHostException;
import  java.util.List;
import  java.util.Set;
import  com.mongodb.BasicDBObject;
import  com.mongodb.DB;
import  com.mongodb.DBCollection;
import  com.mongodb.DBCursor;
import  com.mongodb.DBObject;
import  com.mongodb.Mongo;
import  com.mongodb.MongoException;
public   class  MongoDbTest {
   public   static   void  main(String[] args)  throws  UnknownHostException, MongoException {
     //Mongo m = new Mongo();
     //Mongo m = new Mongo("localhost");
    Mongo m =  new  Mongo( "localhost" , 27017);
    DB db = m.getDB( "mytest" );
    Set<String> colls = db.getCollectionNames();
     for  (String s : colls) {
        System. out .println(s);
    }
    DBCollection coll = db.getCollection( "testCollection" );
    BasicDBObject doc =  new  BasicDBObject();
   
    doc.put( "name" "MongoDB" );
    doc.put( "type" "database" );
    doc.put( "count" , 1);
    BasicDBObject info =  new  BasicDBObject();
    info.put( "x" , 203);
    info.put( "y" , 102);
    doc.put( "info" , info);
    coll.insert(doc);
    DBObject myDoc = coll.findOne();
    System. out .println(myDoc);
   
     //Adding Multiple Documents
     for  ( int  i=0; i < 100; i++) {
      coll.insert( new  BasicDBObject().append( "i" , i));
    }
   
   
     //Counting Documents in A Collection
    System. out .println(coll.getCount());
   
     //Using a Cursor to Get All the Documents
    DBCursor  cur  = coll.find();
     while ( cur .hasNext()) {
        System. out .println( cur .next());
    }
   
    System. out .println( "-------------华丽分隔线----------------------" );
     //Getting A Single Document with A Query
    BasicDBObject query =  new  BasicDBObject();
    query.put( "i" , 71);
     cur  = coll.find(query);   
    System. out .println( "查找i=71结果为:" );
     while ( cur .hasNext()) {
        System. out .println( cur .next());
    }
    System. out .println( "查找i=71结束!" );
   
    System. out .println( "-------------华丽分隔线----------------------" );
    query =  new  BasicDBObject();
    query.put( "i" new  BasicDBObject( "$gt" , 90));   // e.g. find all where i > 50
     cur  = coll.find(query);
    System. out .println( "查找i&gt;90结果为:" );
     while ( cur .hasNext()) {
        System. out .println( cur .next());
    }
    System. out .println( "查找i&gt;90结束!" );
   
    System. out .println( "-------------华丽分隔线----------------------" );
     /**
      *   which   should   print   the   documents   where   i   &gt;   50.  
      *   We   could   also   get   a   range,   say   20   < i &lt;= 30 :
      */
    query =  new  BasicDBObject();
    query.put( "i" new  BasicDBObject( "$gt" , 20).append( "$lte" , 25));   // i.e.   20 &lt; i &lt;= 30
     cur  = coll.find(query);
    System. out .println( "查找20 &lt; i &lt;= 25结果为:" );
     while ( cur .hasNext()) {
        System. out .println( cur .next());
    }
    System. out .println( "查找20 &lt; i &lt;= 25结束!" );
    System. out .println( "-------------华丽分隔线----------------------" );
     //Creating An Index
    coll.createIndex( new  BasicDBObject( "i" , 1));   // create index on "i", ascending
     //Getting a List of Indexes on a Collection
    List&lt;DBObject> list = coll.getIndexInfo();
    System. out .println( "Getting a List of Indexes on a Collection start..." );
     for  (DBObject o : list) {
        System. out .println(o);
    }
    System. out .println( "Getting a List of Indexes on a Collection end!" );
   
    System. out .println( "-------------华丽分隔线----------------------" );
    System. out .println( "Getting A List of Databases start..." );
     for  (String s : m.getDatabaseNames()) {
      System. out .println(s);
    }
    System. out .println( "Getting A List of Databases end" );
    System. out .println( "-------------华丽分隔线----------------------" );
    System. out .println( "Dropping A Database start..." );
     //m.dropDatabase("my_new_db");
    System. out .println( "Dropping A Database end!" );
  }
}
相关实践学习
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月前
|
人工智能 安全 Java
Java和Python在企业中的应用情况
Java和Python在企业中的应用情况
84 7
|
2月前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
213 3
|
1天前
|
Java 应用服务中间件 API
【潜意识Java】javaee中的SpringBoot在Java 开发中的应用与详细分析
本文介绍了 Spring Boot 的核心概念和使用场景,并通过一个实战项目演示了如何构建一个简单的 RESTful API。
19 5
|
1天前
|
人工智能 自然语言处理 搜索推荐
【潜意识Java】了解并详细分析Java与AIGC的结合应用和使用方式
本文介绍了如何将Java与AIGC(人工智能生成内容)技术结合,实现智能文本生成。
19 5
|
1天前
|
Java 编译器 开发者
Java中的this关键字详解:深入理解与应用
本文深入解析了Java中`this`关键字的多种用法
26 9
|
1天前
|
SQL Java 数据库连接
【潜意识Java】深入理解MyBatis,从基础到高级的深度细节应用
本文详细介绍了MyBatis,一个轻量级的Java持久化框架。内容涵盖MyBatis的基本概念、配置与环境搭建、基础操作(如创建实体类、Mapper接口及映射文件)以及CRUD操作的实现。此外,还深入探讨了高级特性,包括动态SQL和缓存机制。通过代码示例,帮助开发者更好地掌握MyBatis的使用技巧,提升数据库操作效率。总结部分强调了MyBatis的优势及其在实际开发中的应用价值。
10 1
|
26天前
|
SQL NoSQL Java
Java使用sql查询mongodb
通过使用 MongoDB Connector for BI 和 JDBC,开发者可以在 Java 中使用 SQL 语法查询 MongoDB 数据库。这种方法对于熟悉 SQL 的团队非常有帮助,能够快速实现对 MongoDB 数据的操作。同时,也需要注意到这种方法的性能和功能限制,根据具体应用场景进行选择和优化。
81 9
|
1月前
|
存储 NoSQL atlas
探索MongoDB:发展历程、优势与应用场景
MongoDB 是一个开源的文档型数据库,由 DoubleClick 团队于2007年创立,旨在解决传统数据库的扩展性和灵活性问题。它支持 JSON 格式的存储和查询,具备高可用性、高扩展性和灵活性等优势。MongoDB 适用于社交、物联网、视频直播和内容管理等多种场景,并被阿里巴巴、腾讯等一线互联网公司广泛使用。其主要版本包括 MongoDB Atlas(云服务)、MongoDB Enterprise Advanced(商业版)和 MongoDB Community Edition(免费版)。自2009年发布1.0版本以来,MongoDB 不断创新,最新版本为7.0,在性能和功能上持续优化。
80 12
|
28天前
|
安全 算法 Java
Java CAS原理和应用场景大揭秘:你掌握了吗?
CAS(Compare and Swap)是一种乐观锁机制,通过硬件指令实现原子操作,确保多线程环境下对共享变量的安全访问。它避免了传统互斥锁的性能开销和线程阻塞问题。CAS操作包含三个步骤:获取期望值、比较当前值与期望值是否相等、若相等则更新为新值。CAS广泛应用于高并发场景,如数据库事务、分布式锁、无锁数据结构等,但需注意ABA问题。Java中常用`java.util.concurrent.atomic`包下的类支持CAS操作。
64 2
|
2月前
|
缓存 Java 开发者
Java多线程并发编程:同步机制与实践应用
本文深入探讨Java多线程中的同步机制,分析了多线程并发带来的数据不一致等问题,详细介绍了`synchronized`关键字、`ReentrantLock`显式锁及`ReentrantReadWriteLock`读写锁的应用,结合代码示例展示了如何有效解决竞态条件,提升程序性能与稳定性。
239 6