`
dxm1986
  • 浏览: 435111 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【转】小试MongoDB及Java的CRUD

 
阅读更多

小试MongoDB及Java的CRUD

小试MongoDB及Java的CRUD

http://www.cnblogs.com/varlxj/archive/2010/03/12/1684181.html

 

最近刚做好一个站,基于rails 3,教程为主,大家捧场看看,谢谢!www.yo945.com

看过JavaEye的Robbin的《NoSQL数据库探讨之一 - 为什么要用非关系数据库?》后,才知道,原来世界上还有这样的一种数据库,并深深的为其性能着迷。不过非关系数据库的成熟程序毕竟还不能和传统的关系数据库比,实在是不敢在实际工程中使用。

最近在想大量测试数据如何存放的时候,突然觉得非关系数据库非常合适,又查了一下,发现原来非关系数据库已经挺成熟了,很大国际性的大网站也开始运用,而我想存储的大量数据,非常的对应KEY-VALUE这样的结构。想用就学一下吧,经过比对后,我选择了MongoDB。

去官方网站下载了程序,“绿色”的,通过命令行直接运行BIN下面的服务器mongod.exe即可,不过默认的数据库位置在C盘下,这总是不大合适,可以通过加参数 -dbpath来改变,如

mongod.exe –dbpath d:/db

注意这里有个问题,Windows下,一般是使用\作为路径分隔符的,不过在这里,如果直接使用d:\db这样的话,mongod会把\去掉,变成d:db这样,导致启动失败,所以比较简单的方法就是用/来代替\

服务器启动后,可以在浏览器中访问,默认地址是:http://127.0.0.1:28017/,里面会有一些数据库的基本信息

访问数据库可以使用BIN下面的mongo.exe,是个命令行工具。对于用惯了MS-SQL,MySQL这样有良好的数据库UI工具的我来说,让我直接用命令行去操作数据库实在是有些不习惯,在网上查了一下,UI工具有倒是有,不过都不大完善的样子,也就懒得下了。在命令行下,输入help可以看到基本操作命令:

show dbs:显示数据库列表 
show collections:显示当前数据库中的集合(类似关系数据库中的表) 
show users:显示用户

use <db name>:切换当前数据库,这和MS-SQL里面的意思一样 
db.help():显示数据库操作命令,里面有很多的命令 
db.foo.help():显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合,并非真正意义上的命令 
db.foo.find():对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据) 
db.foo.find( { a : 1 } ):对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1

------------------------------------------------

大致的说明一下MongoDB中的数据格式,我没有去详细的查看官方的文档,只是按我试用过的感觉来说,其数据结构,类似JSON,即key-value成对,key一般就是String,而value而无所谓了,如一个JSON数据:


     name:"凤姐", 
     birthday:{ 
        year:1987, 
        month:1, 
        day:20  
     } 
}

只要你愿意,就可以把Value不断的复杂化,以方便存储数据

-----------------------------------------------------------

要使用Java操作MongoDB的话,要到官方网站下载一个驱动包,点击网站上的Drivers里面,可以看到目前支持的语言,非常的多……把包导入后,可以尝试来操作了(记得一定要开着服务器)

首先介绍一下比较常用的几个类

Mongo:连接服务器,执行一些数据库操作的选项,如新建立一个数据库等

DB:对应一个数据库,可以用来建立集合等操作

DBCollection:对应一个集合(类似表),可能是我们用得最多的,可以添加删除记录等

DBObject接口和BasicDBObject对象:表示一个具体的记录,BasicDBObject实现了DBObject,因为是key-value的数据结构,所以用起来其实和HashMap是基本一致的

DBCursor:用来遍历取得的数据,实现了Iterable和Iterator

接下来实际的操作一下,代码如下:

01 import com.mongodb.*;
02  
03 public class Main {
04     public static void main(String[] args) {
05         try{
06             Mongo m = new Mongo("127.0.0.1");
07             //选择数据库,如果没有这个数据库的话,会自动建立
08             DB db = m.getDB("mongo");
09             //列出所有数据库名,不过发现,如果数据库里面是没有数据的话,并不会被列出来
10             System.out.println("数据库列表:"+m.getDatabaseNames());
11  
12             //建立一个集合,和数据库一样,如果没有,会自动建立
13             DBCollection col = db.getCollection("col");
14             //列出所有集合名,和数据库一样,如果集合里面是没有数据的话,并不会被列出来
15             System.out.println("当前数据库下的集合列表:"+db.getCollectionNames());
16  
17             //建立一个数据项,重复执行会多次添加一样的数据
18             BasicDBObject val = new BasicDBObject();
19             val.put("name""凤姐");
20             col.save(val);
21             //保存的数据为
22             //{ "_id" : "4b8de2f3053068a371e870c0" , "name" : "凤姐"}
23             //_id是系统自动帮加上的,全局唯一
24             //多次加入一样的数据时,_id都是不一样的
25  
26             //取得所有数据并打印出来
27             DBCursor ite = col.find();
28             while(ite.hasNext())
29             {
30                 System.out.println(ite.next());
31             }
32         }catch(Exception error)
33         {
34             error.printStackTrace();
35         }
36     }
37 }

 

----------------------------更新操作--------------------------

01 import com.mongodb.*;
02  
03 public class Main {
04     public static void main(String[] args) {
05         try{
06             Mongo m = new Mongo("127.0.0.1");
07             DB db = m.getDB("mongo");
08             DBCollection col = db.getCollection("col");
09  
10             System.out.println("修改前:");
11             showData(col);
12  
13             //查找所有 name=凤姐 的项,并更新
14             BasicDBObject old_val = new BasicDBObject(),new_val = new BasicDBObject();
15             old_val.put("name""凤姐无敌");
16             new_val.put("name""凤姐无敌");
17             col.update(old_val, new_val);//只会更新一个
18             //col.updateMulti(new_val, old_val)不知道怎么回事,这函数不顶用
19  
20             System.out.println("修改后:");
21             showData(col);
22         }catch(Exception error)
23         {
24             error.printStackTrace();
25         }
26     }
27  
28     static void showData(DBCollection col)
29     {
30         DBCursor ite = col.find();
31         while(ite.hasNext())
32         {
33             System.out.println(ite.next());
34         }
35     }
36 }
Technorati 标签: MongoDB,java

最近刚做好一个站,基于rails 3,教程为主,大家捧场看看,谢谢!www.yo945.com

看过JavaEye的Robbin的《NoSQL数据库探讨之一 - 为什么要用非关系数据库?》后,才知道,原来世界上还有这样的一种数据库,并深深的为其性能着迷。不过非关系数据库的成熟程序毕竟还不能和传统的关系数据库比,实在是不敢在实际工程中使用。

最近在想大量测试数据如何存放的时候,突然觉得非关系数据库非常合适,又查了一下,发现原来非关系数据库已经挺成熟了,很大国际性的大网站也开始运用,而我想存储的大量数据,非常的对应KEY-VALUE这样的结构。想用就学一下吧,经过比对后,我选择了MongoDB。

去官方网站下载了程序,“绿色”的,通过命令行直接运行BIN下面的服务器mongod.exe即可,不过默认的数据库位置在C盘下,这总是不大合适,可以通过加参数 -dbpath来改变,如

mongod.exe –dbpath d:/db

注意这里有个问题,Windows下,一般是使用\作为路径分隔符的,不过在这里,如果直接使用d:\db这样的话,mongod会把\去掉,变成d:db这样,导致启动失败,所以比较简单的方法就是用/来代替\

服务器启动后,可以在浏览器中访问,默认地址是:http://127.0.0.1:28017/,里面会有一些数据库的基本信息

访问数据库可以使用BIN下面的mongo.exe,是个命令行工具。对于用惯了MS-SQL,MySQL这样有良好的数据库UI工具的我来说,让我直接用命令行去操作数据库实在是有些不习惯,在网上查了一下,UI工具有倒是有,不过都不大完善的样子,也就懒得下了。在命令行下,输入help可以看到基本操作命令:

show dbs:显示数据库列表 
show collections:显示当前数据库中的集合(类似关系数据库中的表) 
show users:显示用户

use <db name>:切换当前数据库,这和MS-SQL里面的意思一样 
db.help():显示数据库操作命令,里面有很多的命令 
db.foo.help():显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合,并非真正意义上的命令 
db.foo.find():对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据) 
db.foo.find( { a : 1 } ):对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1

------------------------------------------------

大致的说明一下MongoDB中的数据格式,我没有去详细的查看官方的文档,只是按我试用过的感觉来说,其数据结构,类似JSON,即key-value成对,key一般就是String,而value而无所谓了,如一个JSON数据:


     name:"凤姐", 
     birthday:{ 
        year:1987, 
        month:1, 
        day:20  
     } 
}

只要你愿意,就可以把Value不断的复杂化,以方便存储数据

-----------------------------------------------------------

要使用Java操作MongoDB的话,要到官方网站下载一个驱动包,点击网站上的Drivers里面,可以看到目前支持的语言,非常的多……把包导入后,可以尝试来操作了(记得一定要开着服务器)

首先介绍一下比较常用的几个类

Mongo:连接服务器,执行一些数据库操作的选项,如新建立一个数据库等

DB:对应一个数据库,可以用来建立集合等操作

DBCollection:对应一个集合(类似表),可能是我们用得最多的,可以添加删除记录等

DBObject接口和BasicDBObject对象:表示一个具体的记录,BasicDBObject实现了DBObject,因为是key-value的数据结构,所以用起来其实和HashMap是基本一致的

DBCursor:用来遍历取得的数据,实现了Iterable和Iterator

接下来实际的操作一下,代码如下:

01 import com.mongodb.*;
02  
03 public class Main {
04     public static void main(String[] args) {
05         try{
06             Mongo m = new Mongo("127.0.0.1");
07             //选择数据库,如果没有这个数据库的话,会自动建立
08             DB db = m.getDB("mongo");
09             //列出所有数据库名,不过发现,如果数据库里面是没有数据的话,并不会被列出来
10             System.out.println("数据库列表:"+m.getDatabaseNames());
11  
12             //建立一个集合,和数据库一样,如果没有,会自动建立
13             DBCollection col = db.getCollection("col");
14             //列出所有集合名,和数据库一样,如果集合里面是没有数据的话,并不会被列出来
15             System.out.println("当前数据库下的集合列表:"+db.getCollectionNames());
16  
17             //建立一个数据项,重复执行会多次添加一样的数据
18             BasicDBObject val = new BasicDBObject();
19             val.put("name""凤姐");
20             col.save(val);
21             //保存的数据为
22             //{ "_id" : "4b8de2f3053068a371e870c0" , "name" : "凤姐"}
23             //_id是系统自动帮加上的,全局唯一
24             //多次加入一样的数据时,_id都是不一样的
25  
26             //取得所有数据并打印出来
27             DBCursor ite = col.find();
28             while(ite.hasNext())
29             {
30                 System.out.println(ite.next());
31             }
32         }catch(Exception error)
33         {
34             error.printStackTrace();
35         }
36     }
37 }

 

----------------------------更新操作--------------------------

01 import com.mongodb.*;
02  
03 public class Main {
04     public static void main(String[] args) {
05         try{
06             Mongo m = new Mongo("127.0.0.1");
07             DB db = m.getDB("mongo");
08             DBCollection col = db.getCollection("col");
09  
10             System.out.println("修改前:");
11             showData(col);
12  
13             //查找所有 name=凤姐 的项,并更新
14             BasicDBObject old_val = new BasicDBObject(),new_val = new BasicDBObject();
15             old_val.put("name""凤姐无敌");
16             new_val.put("name""凤姐无敌");
17             col.update(old_val, new_val);//只会更新一个
18             //col.updateMulti(new_val, old_val)不知道怎么回事,这函数不顶用
19  
20             System.out.println("修改后:");
21             showData(col);
22         }catch(Exception error)
23         {
24             error.printStackTrace();
25         }
26     }
27  
28     static void showData(DBCollection col)
29     {
30         DBCursor ite = col.find();
31         while(ite.hasNext())
32         {
33             System.out.println(ite.next());
34         }
35     }
36 }
Technorati 标签: MongoDB,java

分享到:
评论

相关推荐

    java操作mongoDB(CRUD)

    Java操作MongoDB主要涉及到的是Java驱动程序与MongoDB数据库之间的交互,这涵盖了创建连接、执行CRUD(创建、读取、更新、删除)操作等一系列基本的数据库管理任务。MongoDB是一个流行的NoSQL数据库,以其灵活性、高...

    Java操作MongoDB之CRUD(增删改查)

    这篇博文“Java操作MongoDB之CRUD(增删改查)”主要探讨了如何使用Java驱动程序来执行基本的数据库操作,包括创建(Create)、读取(Read)、更新(Update)和删除(Delete)。 首先,我们来了解MongoDB的Java驱动...

    mongodb_java_2.6_API

    MongoDB的Java驱动程序是Java开发者与MongoDB服务器通信的桥梁,它提供了丰富的API,使得在Java应用中执行CRUD(创建、读取、更新、删除)操作变得简单。2.6版本是历史版本,但仍然包含了许多核心功能,如连接管理...

    Java程序对MongoDB数据库进行CRUD操作.pptx

    【Java程序对MongoDB数据库进行CRUD操作】 MongoDB是一种流行的NoSQL(Not Only SQL)非关系型数据库,它的设计思想是面向文档的,适合处理大量结构化和半结构化的数据。与传统的SQL数据库不同,MongoDB不使用表格...

    mongodb在java中小试牛刀

    只需要定义一个接口,继承自MongoRepository,并提供泛型参数(对应MongoDB集合的实体类型和ID类型),Spring会自动为你生成实现,包括CRUD操作和自定义查询方法。 ```java public interface UserRepository ...

    MongoDB、Java与对象关系映射

    ### MongoDB、Java与对象关系映射 #### MongoDB简介与特性 MongoDB作为一种强大的NoSQL数据库,在处理非结构化数据方面有着显著的优势。它通过使用JSON(JavaScript Object Notation)格式来存储和检索数据,简化...

    mongodb-java-driver-4.4.0.jar

    mongodb-java-driver-4.4.0.jar

    Springboot整合MongoDB进行CRUD操作的两种方式(实例代码详解)

    Springboot整合MongoDB进行CRUD操作的两种方式 在分布式和微服务架构中,Springboot和MongoDB是非常流行的技术栈。 Springboot是最简单的使用Spring的方式,而MongoDB是最流行的NoSQL数据库。两者在实际应用中使用...

    MongoDB for Java Developers

    MongoDB for Java Developers Design, build, and deliver efficient Java applications using the most advanced NoSQL database

    mongodb_java_driver

    mongodb_java_driver 已经验证可用!

    MongoDB 在java中的应用 纯Java操作

    - 为了简化对MongoDB的操作,可以设计一个通用的DAO层来封装基本的CRUD操作。 - **获取数据库**: ```java MongoDatabase database = mongoClient.getDatabase("test"); ``` - **获取集合**: ```java ...

    MongoDB之Java使用例子

    在这个“MongoDB之Java使用例子”中,我们将深入探讨如何在Java环境中操作MongoDB数据库,包括增、删、改、查(CRUD)操作以及图像数据的存储和检索。 首先,Java与MongoDB的交互主要通过MongoDB的Java驱动程序实现...

    MongoDB-Java驱动API

    在Java开发环境中,MongoDB提供了Java驱动API,使得Java程序员可以方便地与MongoDB进行交互。本文档将深入探讨如何利用Java驱动API来操作MongoDB数据库。 一、MongoDB Java驱动API简介 MongoDB的Java驱动程序是Java...

    MongoDBjava各版本驱动下载

    它基于Java 6及更高版本,实现了MongoDB的Wire Protocol,允许Java应用与MongoDB进行通信。Java驱动分为几个主要版本,每个版本可能对应不同的功能特性和兼容性。 2. 版本选择: 选择MongoDB Java驱动版本时,应...

    mongodb 3.4.2 java包

    它允许开发者通过Java代码执行所有数据库操作,如创建、读取、更新和删除(CRUD)数据。驱动程序提供了丰富的API,可以方便地进行数据操作,同时支持异步和同步编程模式。 2. **连接管理**:在Java应用中,开发者...

    MongoDB免安装 java Demo

    "MongoDB免安装 Java Demo" 是一个针对初学者或者开发者的实践项目,旨在帮助理解如何在无需完整安装MongoDB的情况下,通过Java进行数据库操作。这个Demo包含了启动MongoDB、创建集合、执行查询、插入数据以及删除...

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

    目前,Java驱动通常使用的是MongoDB Java Driver,可以在Maven仓库中找到对应的依赖,例如: ```xml &lt;groupId&gt;org.mongodb &lt;artifactId&gt;mongodb-driver-sync &lt;version&gt;4.3.0 ``` 接下来,我们需要配置MongoDB...

    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的java驱动包

    这是一个java的mongodb的驱动包,使用它就能够与用java去连接mongodb服务器,和操作mongodb

    Java mongodb CRUD 操作代码

    在本文中,我们将深入探讨如何使用Java进行MongoDB的基本CRUD操作,以及如何处理图片的存储、读取和删除。MongoDB是一个流行的NoSQL数据库,它以JSON格式存储数据,而Java是与其交互的常用编程语言。让我们开始探索...

Global site tag (gtag.js) - Google Analytics