Mongodb官方提供的Java驱动,保存与读取,需要的者是DBObject对象,这是一个接口,实现put,get等方法,跟map类似,如 果我们要直接把普通的java对象保存到mongodb,就需要先转换成DBObject对象,或者直接实现DBObject接口,操作起来相当复杂。还 好,monodb驱动带了把json转换成DBObject对象的功能,加上Google的Gson,就可以实现把普通的对象保存到mongodb中。如 果要从mogodb中读出对象,反过来操作即可,但有一点需要注意的是,mongodb的文档没有固定的字段,所以用Gson转换,可能因为各个文档属性 不同,转出的对象属性都是空的,要确保在插入时都是插入同一个类的对象。
下面的例子是把User对象插入到Mongodb中,并读出来
User.java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
package com.mongo; public class User { String name; int age; Oid _id; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } /** * Mongodb会自动生成ObjectId * @author fhp * */ public class Oid{ String $oid; public String get$oid() { return $oid; } public void set$oid(String $oid) { this.$oid = $oid; } } } |
Main.java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
package com.mongo; import java.net.UnknownHostException; import com.google.gson.Gson; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.MongoClient; import com.mongodb.util.JSON; public class Main { /** * @param args * @throws UnknownHostException */ public static void main(String[] args) throws UnknownHostException { // TODO Auto-generated method stub MongoClient mongoClient = new MongoClient(); DB psdoc = mongoClient.getDB("psdoc"); DBCollection user=psdoc.getCollection("user"); User u1=new User(); u1.setAge(20); u1.setName("ssss"); Gson gson=new Gson(); //转换成json字符串,再转换成DBObject对象 DBObject dbObject = (DBObject) JSON.parse(gson.toJson(u1)); //插入数据库 user.insert(dbObject); DBCursor cursor=user.find(); while(cursor.hasNext()) { DBObject obj=cursor.next(); //反转 User u=gson.fromJson(obj.toString(), User.class); System.out.println(u.name); } } } |
为了方便,可以直接把Gson整合进驱动里,直接修改驱动的源代码
com.mongodb.DBCollection.java:
新增方法:
1 2 3 4 5 6 7 8 9 10 11 12 |
/** * 把普通的对象写入数据库 * * @param obj * @return */ public WriteResult insert(Object obj) { Gson gson = new Gson(); DBObject dbObject = (DBObject) JSON.parse(gson.toJson(obj)); gson=null; return insert(dbObject); } |
com.mongodb.DBCursor.java:
新增方法
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/** * 从数据库读出对象 * @param obj * @param clazz * @return */ public <T> T nextObj(Class<T> clazz) { _checkType( CursorType.ITERATOR ); Gson gson=new Gson(); T u=gson.fromJson(_next().toString(), clazz); gson=null; return u; } |
修改后的调用方法:
Main.java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
package com.mongo; import java.net.UnknownHostException; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.MongoClient; public class Main { /** * @param args * @throws UnknownHostException */ public static void main(String[] args) throws UnknownHostException { // TODO Auto-generated method stub MongoClient mongoClient = new MongoClient(); DB psdoc = mongoClient.getDB("psdoc"); DBCollection user=psdoc.getCollection("user"); User u1=new User(); u1.setAge(20); u1.setName("ssss"); //直接插入对象 user.insert(u1); DBCursor cursor=user.find(); while(cursor.hasNext()) { //传入类参数,反回该类对象 User u=cursor.nextObj(User.class); System.out.println(u.name); } } } |
© 2013, 冰冻鱼. 请尊重作者劳动成果,复制转载保留本站链接! 应用开发笔记
相关推荐
2. **MongoDB数据库**: MongoDB是一个文档型数据库,采用JSON-like格式存储数据,属于NoSQL数据库,适合处理非结构化和半结构化数据,以及高并发写操作。MongoDB具有横向扩展性,易于进行分布式部署。 3. **数据...
通过使用 JSON 文档实现灵活模式, MongoDB 能够轻松地处理大量的数据同时也能提供高可用性。MongoDB 通过复制集来保证高可用性,通过 Sharded cluster 来保证可扩展性。 二、 BSON BSON 是 MongoDB 的一种数据...
3.灵活的数据模型:MongoDB 使用 BSON 存储数据,可以存储复杂的数据结构,如数组和嵌套对象。 4.丰富的查询语法:MongoDB 提供了丰富的查询语法,可以实现复杂的查询操作。 MongoDB 数据库应用的缺点: 1. 学习...
- **使用`use`命令**:在MongoDB shell中,可以使用`use`命令来选择一个数据库或创建一个新的数据库。例如: ```shell use mydatabase ``` 上述命令会创建(或选择)名为`mydatabase`的数据库。 #### 三、插入...
1. 数据模型:MongoDB采用文档型数据模型,文档是JSON(JavaScript Object Notation)格式的对象,包含键值对,这使得数据结构更加灵活。 2. 集合与文档:集合类似于关系数据库中的表,但没有固定的列结构。文档是...
"MongDB数据库操作和面试专题及答案"是一份涵盖MongoDB数据库操作技术和面试准备内容的资源,旨在帮助学习者深入理解MongoDB数据库的原理和应用,并为应对相关面试提供充分准备。以下是这份资源的描述: ### 内容...
MongoDB是一种流行的开源、分布式文档型数据库,以其灵活性、高性能和可扩展性而备受开发者青睐。在Java开发环境中,我们可以使用Java驱动程序来与MongoDB进行交互,进行数据的存储和检索。本资料将深入讲解如何使用...
MongoDB是一种NoSQL数据库,它不使用传统的关系型数据模型,而是使用JSON-like文档结构来存储数据,这使得数据的存储和查询更为灵活。它的核心特性包括: 1. 文档型数据模型:MongoDB以BSON(Binary JSON)格式存储...
MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。 可以使用"show dbs"命令来显示所有数据库的列表。例如: ``` $ ./mongo MongoDB shell version: ...
1. **文档型数据库**:MongoDB使用JSON-like的BSON格式存储数据,这种格式易于理解和处理,同时支持嵌套的数据结构,适合存储复杂的数据模型。 2. **分布式架构**:MongoDB支持分布式部署,可以跨多个服务器、数据...
NoSQL数据库采用键值存储、文档存储、宽列存储、图数据库等多种模型,而本文关注的MongoDB就是一种文档型数据库,特点在于其灵活的数据模型和对大数据处理的优化能力。由于其不提供标准SQL访问接口,MongoDB在与传统...
MongoDB数据库
9. **数据查询语言**:MongoDB使用类似于SQL的查询语言MongoDB Query Language (MQL),提供了丰富的查询和更新操作,支持聚合框架,方便进行数据分析。 10. **备份与恢复**:MongoDB提供备份和恢复机制,包括本地...
MongoDB是一款非关系型数据库(NoSQL),它以JSON格式的文档存储数据,具有高度的灵活性和可扩展性。在爬虫项目中,MongoDB的优势在于能够轻松处理结构不固定或半结构化的数据,例如网页抓取时遇到的各种不同格式的...
MongoDB是一种流行的开源文档型数据库,它以JSON格式存储数据,具有高性能、高可用性和可扩展性。在Java应用程序中,我们通常使用Java驱动程序来与MongoDB进行交互。本篇将详细介绍如何利用Java实现MongoDB数据库的...
MongoDB的内部执行引擎是一个JavaScript解释器,这意味着用户可以直接使用JavaScript语法进行查询和操作数据,这极大地简化了开发过程,因为开发者可以利用他们熟悉的语言进行数据库操作。每个文档在MongoDB中都可以...
Geoserver MongoDB插件是Geoserver的一款插件,用于连接MongoDB数据库,实现矢量数据的读取和写入。Geoserver MongoDB插件提供了强大的功能,能够实现MongoDB矢量数据的读取和写入。 六、Conclusion 本文介绍了...
作为NoSQL数据库的一种,MongoDB不采用传统的表格和列式数据模型,而是使用键值对、文档、集合和数据库的结构来存储数据,这使得它在处理JSON、XML等半结构化和非结构化数据时表现出色。 MongoDB的主要特点包括: ...
NoSQL Manager for MongoDB是一个图形化管理工具,它便于开发者和管理员对MongoDB数据库进行操作和维护。以下是对NoSQL Manager for MongoDB的详细介绍: 数据库管理: 可以方便地连接、创建、删除和查看MongoDB...
随着NoSQL数据库越来越流行,MongoDB数据库作为NoSQL数据库中的领头羊,使用也越来越广泛。为此,FineReport V8.0版本提供了数据连接和数据集接口,可以通过开发一款可以连接和使用的MongoDB数据库的插件。