`
dannyhz
  • 浏览: 398135 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

MongoDB 和Java访问MongoDB数据库的程序

 
阅读更多
引用


面向集合, 意思是数据被分组到若干集合,这些集合称作聚集(collections). 在数据库里每个聚集有一个唯一的名字,可以包含无限个文档. 聚集是RDBMS中表的同义词,区别是聚集不需要进行模式定义.
模式自由, 意思是数据库并不需要知道你将存入到聚集中的文档的任何结构信息.实际上,你可以在同一个聚集中存储不同结构的文档.
文档型, 意思是我们存储的数据是键-值对的集合,键是字符串,值可以是数据类型集合里的任意类型,包括数组和文档. 我们把这个数据格式称作 "[BSON]"即 "Binary Serialized dOcument Notation."
 面向文档存储:(类JSON数据模式简单而强大)。
  高效的传统存储方式:支持二进制数据及大型对象(如照片和视频)。
  复制及自动故障转移:Mongo数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。
  Auto-Sharding自动分片支持云级扩展性(处于早期alpha阶段):自动分片功能支持水平的数据库集群,可动态添加额外的机器。
  动态查询:它支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
  全索引支持:包括文档内嵌对象及数组。Mongo的查询优化器会分析查询表达式,并生成一个高效的查询计划。
  支持RUBY,PYTHON,JAVA,C++,PHP等多种语言。
  面向集合存储,易存储对象类型的数据:存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各中复杂的文件类型;
  *模式自由:存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义;
  *支持完全索引,包含内部对象。
  *支持复制和故障恢复。
  *自动处理碎片: 自动分片功能支持水平的数据库集群,可动态添加额外的机器
  查询监视:Mongo包含一个监视工具用于分析数据库操作的性能

MongoDB的功能
       查询:基于查询对象或者类SQL语句搜索文档. 查询结果可以排序,进行返回大小限制,可以跳过部分结果集,也可以返回文档的一部分.
       插入和更新 : 插入新文档,更新已有文档.
       索引管理 : 对文档的一个或者多个键(包括子结构)创建索引,删除索引等等
常用命令: 所有MongoDB 操作都可以通过socket传输的DB命令来执行.

以下是Java测试程序,基于mongo-2.8.0.jar包作为驱动


package com.xiaomiao.test;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Map;
import com.mongodb.BasicDBObject;
import com.mongodb.BasicDBObjectBuilder;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
import com.mongodb.util.JSON;

public class MongoDBTest {

public static void main(String[] args)  throws UnknownHostException,MongoException{
  // TODO Auto-generated method stub
  try {
   // default MongoDB server is localhost
    String ServerIP = "192.168.2.98";
    String MyUsername ="sa";
    char MyPassword[] = { 's','a'};
  
    Mongo mongo = new Mongo(ServerIP,27017);
     
             // 连接名为yourdb的数据库,假如数据库不存在的话,mongodb会自动建立
    DB db = mongo.getDB("my_mongodb");
  
    boolean auth = db.authenticate(MyUsername, MyPassword);
  
    if (!auth)
     throw new MongoException("MongoDB auth failure.");
     
    // Get collection from MongoDB, database named "yourDB"
    // 从MongoDB中获得名为yourColleection的数据集合,如果该数据集合不存在,MongoDB会为其新建立
    DBCollection collection = db.getCollection("yourCollection");
  
    // 清除已经插入的documents
    collection.drop();
             
    //使用BasicDBObject对象创建一个mongodb的document,并给予赋值。
    BasicDBObject document = new BasicDBObject();
    document.put("id", 1001);
    document.put("msg", "hello world mongoDB in Java");
  
      
    //将新建立的document保存到collection中去
    collection.insert(document);
      
    //System.out.println(collection.save(document).getN());
  
    // 创建要查询的document
    BasicDBObject searchQuery = new BasicDBObject();
    searchQuery.put("id", 1001);
    // 使用collection的find方法查找document
    DBCursor cursor = collection.find(searchQuery);
    //循环输出结果
    while (cursor.hasNext()) {
     System.out.println(cursor.next());
    }
  
    // 插入一条复合记录的document
    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);
  
    //将新建立的document保存到collection中去
    collection.insert(doc);
  
    // loop 插入100 条documents
    for(int i = 0; i < 100; i++){
     collection.insert(new BasicDBObject().append("i", i));
    }
  
   //直接插入BasicDBObjectBuilder对象构造的document
    insert_builder_obj(collection);
  
    //直接插入Map对象构造的document到collection
    insert_map_obj(collection);
  
    // 直接插入JSON格式的document数据
    insert_json_obj(collection);
  
    DBCursor cur = collection.find();
  
    while (cur.hasNext()){      
     System.out.println(cur.next());
    }
  
    long count = collection.getCount();
    System.out.println("Total documents: " + count);
    System.out.println("Done");
  } catch (UnknownHostException e) {
   e.printStackTrace();
  } catch (MongoException e) {
   e.printStackTrace();
  }
}


private static void insert_json_obj(DBCollection col){
   
  String json = "{'database': 'mkyongDB','table': 'hosting'," +
  "'detail' : {'records' : 99, 'index' : 'vps_index1', 'active' : 'true'}}";
 
  DBObject dbObject =(DBObject)JSON.parse(json);
 
  try { 
   col.insert(dbObject);
  }
  catch (MongoException e) {
    e.printStackTrace();
  }
}


private static void insert_map_obj(DBCollection col){
 
  Map<String, Object> documentMap =new HashMap<String, Object>();
  documentMap.put("database","mongoDB");
  documentMap.put("table", "hosting");
 
  Map<String, String> documentMapDetail =new HashMap<String, String>();
  documentMapDetail.put("records", "100");
  documentMapDetail.put("index", "vps_index1");
  documentMapDetail.put("active", "true");
 
  documentMap.put("detail", documentMapDetail);
 
  col.insert(new BasicDBObject(documentMap));
 
}


private static void insert_builder_obj(DBCollection col){
  BasicDBObjectBuilder documentBuilder = BasicDBObjectBuilder.start()
    .add("database","MySqlDB")
    .add("table","hosting");
 
  BasicDBObjectBuilder documentBuilderDetail = BasicDBObjectBuilder.start()
  .add("records","99")
  .add("index","vps_index1")
  .add("active","true");
 
分享到:
评论

相关推荐

    Mongodb数据库JAVA操作例子

    本篇将详细介绍如何利用Java实现MongoDB数据库的增、删、改、查(CRUD)操作。 1. **连接MongoDB** 要使用Java连接MongoDB,首先需要引入MongoDB Java驱动程序的依赖。在Maven项目中,可以在pom.xml文件中添加以下...

    java实现mongodb数据库的操作

    通过以上步骤,你将能够使用Java驱动程序实现对MongoDB数据库的全面操作。在实际项目中,可以根据需求进一步封装成服务类或DAO层,以便更高效地管理数据。这个压缩包文件中的"MongoDB安装和使用java实现"应该包含了...

    mongodb_java_2.6_API

    总结,"mongodb_java_2.6_API"是Java开发者与MongoDB 2.6版本交互的基础工具,涵盖了一系列操作MongoDB数据库的核心功能。理解并熟练掌握这些API,能帮助开发者高效地在Java应用中实现MongoDB的功能。不过,随着...

    java连接mongodb的jar包

    总的来说,Java连接MongoDB的关键在于理解和使用MongoDB Java驱动程序,通过它,开发者可以轻松地在Java应用中实现对MongoDB数据库的增删改查等各种操作。在实际开发中,确保正确配置JAR文件,理解连接字符串的格式...

    MongoDBjava各版本驱动下载

    MongoDB Java驱动是Java开发者与MongoDB数据库交互的重要工具,它允许Java应用程序通过标准的Java API来执行查询、插入、更新和删除等操作。在Java中使用MongoDB,首先需要安装并配置对应的驱动版本,以确保与正在...

    MongoDB、Java与对象关系映射

    该驱动程序提供了丰富的API,使得Java开发者可以直接操作MongoDB数据库。除了基本的CRUD(创建、读取、更新、删除)操作外,还可以利用高级功能,如聚合框架、地理空间查询等。 为了进一步简化开发流程,可以采用...

    使用java上传MP4文件至mongodb数据库,并下载 源代码

    MongoDB Java驱动还提供了高级特性,如文件版本控制和访问权限管理。 总之,通过Java和MongoDB的GridFS,我们可以便捷地处理MP4等大文件的上传和下载。这使得MongoDB成为存储多媒体数据的理想选择,特别是在需要...

    mongodb 3.4.2 java包

    1. **MongoDB的Java驱动程序**:MongoDB 3.4.2的Java驱动程序是连接MongoDB数据库的关键组件。它允许开发者通过Java代码执行所有数据库操作,如创建、读取、更新和删除(CRUD)数据。驱动程序提供了丰富的API,可以...

    MongoDB-Java驱动API

    本文档将深入探讨如何利用Java驱动API来操作MongoDB数据库。 一、MongoDB Java驱动API简介 MongoDB的Java驱动程序是Java应用程序与MongoDB服务器通信的桥梁。它实现了所有的MongoDB协议,并提供了一系列的类和接口...

    MongoDB免安装 java Demo

    这个驱动程序提供了与MongoDB服务器通信的API,使得我们可以通过编写Java代码来执行各种数据库操作。在"Java执行集合创建、数据查询、数据插入、数据删除操作的demo"中,你将看到如何利用这些API来实现常见的数据库...

    MongoDB入门教程 + 架构简析 + java使用MongoDB的简单程序

    在"Java使用MongoDB的简单程序"中,我们将学习如何使用Java驱动程序连接到MongoDB数据库。Java驱动程序提供了一套API,使得开发者可以轻松地进行数据操作。基本步骤包括:创建MongoClient实例以连接到MongoDB服务器...

    MongoDB的Java访问实现(包括文件存储)

    以上就是Java访问MongoDB的基本步骤和文件存储的实现。注意,实际应用中可能需要处理异常、关闭资源,并根据具体需求进行更复杂的查询和操作。此外,MongoDB 3.6版本后引入了新的API,即MongoClientSession,用于...

    java+MongoDB实现存图片、下载图片的方法示例

    在本文中,我们将使用java作为开发语言,并配合MongoDB数据库来存储和下载图片。java是一种广泛使用的编程语言,known for its platform independence和large community support。MongoDB是一种NoSQL数据库,known ...

    Mongodb + GridFS +Java 操作Mongodb中存储的文件

    然后,我们从`MongoClient`获取到`MongoDatabase`和`MongoCollection`对象,这代表了我们的数据库和集合。在这里,GridFS默认的集合名称是"fs",但也可以自定义: ```java MongoDatabase database = mongoClient....

    mongodb的java驱动jar包3.7.0

    MongoDB的Java驱动是连接Java应用程序与MongoDB数据库的关键组件,3.7.0版本是这一驱动的一个稳定发行版。这个压缩包包含了三个核心的JAR文件,它们分别是`mongodb-driver-3.7.0.jar`、`mongodb-driver-core-3.7.0....

    mongoDB-CURD操作-----JAVA

    在Java开发中,与MongoDB的交互通常通过Java驱动程序实现,它提供了对数据库的基本CURD(创建、读取、更新、删除)操作的支持。本篇文章将深入探讨MongoDB在Java环境下的CURD操作,帮助初学者更好地理解和应用。 ...

    MongoDB 在java中的应用 纯Java操作

    在Java环境中使用MongoDB可以极大地提升应用程序的数据处理能力和性能。 1. **下载**: - 访问官方网站[http://www.mongodb.org/downloads](http://www.mongodb.org/downloads)下载最新版本的MongoDB。 2. **...

    Java程序访问MongoDB

    ### Java程序访问MongoDB知识点详解 #### 一、NoSQL与MongoDB简介 随着互联网技术的发展,非关系型数据库(NoSQL)因其优秀的扩展性和灵活性受到了越来越多的关注。NoSQL数据库适用于处理大规模分布式存储的应用...

    mongodb_java_demo

    总之,"mongodb_java_demo"项目是一个很好的起点,让你学习如何在Java应用中集成和操作MongoDB数据库。通过实践这些基本操作,你可以逐渐熟悉MongoDB的API,并逐步构建更复杂的应用。记得保持你的代码清晰、简洁,...

Global site tag (gtag.js) - Google Analytics