Mongodb 是最近很流行的NO sql DB。非关系型数据库的典型。非常适合厌倦了SQL 的你。
不废话,开始
1 上官网 http://www.mongodb.org/
这个是我xp使用的Windows 32位 版本,限制是DB只能使用2G
http://downloads.mongodb.org/win32/mongodb-win32-i386-2.0.1.zip
自己下载,解压
2 打开 bin目录,例如我的:
C:\soft\mongodb-win32-i386-2.0.0\bin
让我们建立一个启动的脚本(bat)吧,免得每次都命令:
mongod.exe --journal -dbpath C:\soft\mongodb-win32-i386-2.0.0\db
mongod.exe是服务器程序
mongo.exe 是 admin console
--journal 持续运行
-dbpath C:\soft\mongodb-win32-i386-2.0.0\db 指定db存放的目录
运行这个 脚本。
控制台显示:
C:\soft\mongodb-win32-i386-2.0.0\bin>mongod.exe --journal -dbpath C:\soft\mongod b-win32-i386-2.0.0\db Mon Oct 24 18:12:29 [initandlisten] MongoDB starting : pid=6100 port=27017 dbpat h=C:\soft\mongodb-win32-i386-2.0.0\db 32-bit host=xxx Mon Oct 24 18:12:29 [initandlisten] Mon Oct 24 18:12:29 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data Mon Oct 24 18:12:29 [initandlisten] ** see http://blog.mongodb.org/post/13 7788967/32-bit-limitations Mon Oct 24 18:12:29 [initandlisten] ** with --journal, the limit is lower Mon Oct 24 18:12:29 [initandlisten] Mon Oct 24 18:12:29 [initandlisten] db version v2.0.0, pdfile version 4.5 Mon Oct 24 18:12:29 [initandlisten] git version: 695c67dff0ffc361b8568a13366f027 caa406222 Mon Oct 24 18:12:29 [initandlisten] build info: windows (5, 1, 2600, 2, 'Service Pack 3') BOOST_LIB_VERSION=1_42 Mon Oct 24 18:12:29 [initandlisten] options: { dbpath: "C:\soft\mongodb-win32-i3 86-2.0.0\db", journal: true } Mon Oct 24 18:12:29 [initandlisten] journal dir=C:/soft/mongodb-win32-i386-2.0.0 /db/journal Mon Oct 24 18:12:29 [initandlisten] recover : no journal files present, no recov ery needed Mon Oct 24 18:12:29 [websvr] admin web console waiting for connections on port 2 8017 Mon Oct 24 18:12:29 [initandlisten] waiting for connections on port 27017
显示
You are trying to access MongoDB on the native driver port. For http diagnostic access, add 1000 to the port number
就说明你运行成功了。
3 提供一下用到的POJO:
import org.bson.types.ObjectId; import com.google.code.morphia.annotations.Embedded; import com.google.code.morphia.annotations.Entity; import com.google.code.morphia.annotations.Id; @Entity public class Hotel { @Id private ObjectId id; private String name; private int stars; @Embedded private Address address; public ObjectId getId() { return id; } public void setId(ObjectId id) { this.id = id; } // ... getters and setters public String getName() { return name; } public void setName(String name) { this.name = name; } public int getStars() { return stars; } public void setStars(int stars) { this.stars = stars; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } }
import com.google.code.morphia.annotations.Embedded; @Embedded public class Address { private String street; private String city; private String postCode; private String country; // ... getters and setters public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getPostCode() { return postCode; } public void setPostCode(String postCode) { this.postCode = postCode; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } }
4 需要下载数据库的java 驱动
http://github.com/mongodb/mongo-java-driver/downloads
需要参考的驱动API
5 example
这个是单纯MoongoDb 支持的 API 操作,不解释。这是直接操作DB
还没有完成ORM操作。上代码。
import java.net.UnknownHostException; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Set; import org.junit.Before; import org.junit.Test; 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 MongoTest { public static void main(String[] args) { } private Mongo m; private DB db; @Before public void init() { try { // new a Mongo Object ,entrance for accessing MongoDb this.m = new Mongo("localhost"); System.out.println(m.debugString()); // // select a DB // // The database doesn't have to exist - if it doesn't, MongoDB // will create it for you. this.db = m.getDB("test"); System.out.println("DB [" + db.getName() + "] Connected"); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MongoException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void testCases() { // TODO Auto-generated method stub testFindAlltestFindAllCollections(); insertFindAllRemove(); insertFindOneRemove(); insertAndQuery(); createIndex(); ; } private void createIndex() { insertRecords(); // MongoDB supports indexes, and they are very easy to add on a // collection. To create an index, you just specify the field that // should be indexed, and specify if you want the index to be ascending // (1) or descending (-1). The following creates an ascending index on // the "i" field : DBCollection dbconn = db.getCollection("things"); dbconn.createIndex(new BasicDBObject("case", -1)); // create index on "i", // ascending Iterator<DBObject> iter= dbconn.getIndexInfo().iterator(); while (iter.hasNext()) { DBObject dbObject = (DBObject) iter.next(); System.out.println("Index Info:"+dbObject);; } removeAll(); } private void insertAndQuery() { insertRecords(); query(); removeAll(); } private void query() { System.out.println("start query"); DBCollection dbconn = db.getCollection("things"); // looks like find by example BasicDBObject queryDb = new BasicDBObject(); queryDb.append("case", 5); DBCursor dbc = dbconn.find(queryDb); while (dbc.hasNext()) { DBObject dbObject = (DBObject) dbc.next(); System.out.println("result case=5:" + dbObject); } System.out.println("end query"); // find in range BasicDBObject query = new BasicDBObject(); query.put("case", new BasicDBObject("$gt", 5)); // e.g. find all where // case > 5 DBCursor cur = dbconn.find(query); while (cur.hasNext()) { System.out.println("case >5:" + cur.next()); } } private void insertFindOneRemove() { insertRecords(); testFindOneInCollections(); removeAll(); } private void testFindOneInCollections() { System.out.println("Collections Find one:"); DBCollection dbconn = db.getCollection("things"); // declare that just one object is needed,null if none System.out.println(dbconn.findOne()); ; System.out.println("Collections Find one end"); } private void insertFindAllRemove() { insertRecords(); testFindAllInCollections(); removeAll(); } private void removeAll() { System.out.println("start remove all"); DBCollection dbconn = db.getCollection("things"); DBCursor c = dbconn.find(); while (c.hasNext()) { dbconn.remove(c.next()); } System.out.println("done"); } public void testFindAlltestFindAllCollections() { System.out.println("Collections :"); Set<String> colls = db.getCollectionNames(); for (String s : colls) { System.out.print(s); System.out.print(","); } System.out.println(); } public void insertRecords() { System.out.println("start insert :"); DBCollection dbconn = db.getCollection("things"); for (int i = 0; i < 10L; i++) { // BasicDBObject basic=new BasicDBObject(); // // basic.append("time",System.currentTimeMillis()); // // basic.append("obj",i); // dbconn.save(basic); BasicDBObject doc = new BasicDBObject(); doc.put("case", i); 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); dbconn.insert(doc); } System.out.println("Insert End"); } public void testFindAllInCollections() { System.out.println("Data in 'things':"); // Select a Collection ,Collection looks like a Table of RMDBS DBCollection coll = db.getCollection("things"); // find all and print DBCursor c = coll.find(); while (c.hasNext()) { System.out.println(c.next()); } } }
输出结果:
DBTCPConnector: localhost:27017 A1569XDZXLJM8W6/133.4.0.85:27017
DB [test] Connected
Collections :
system.indexes,things,
start insert :
Insert End
Data in 'things':
{ "_id" : { "$oid" : "4eb75882ba4d4fab62ee4cfb"} , "case" : 0 , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}}
{ "_id" : { "$oid" : "4eb75882ba4d4fab62ee4cfc"} , "case" : 1 , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}}
{ "_id" : { "$oid" : "4eb75882ba4d4fab62ee4cfd"} , "case" : 2 , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}}
{ "_id" : { "$oid" : "4eb75882ba4d4fab62ee4cfe"} , "case" : 3 , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}}
{ "_id" : { "$oid" : "4eb75882ba4d4fab62ee4cff"} , "case" : 4 , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}}
{ "_id" : { "$oid" : "4eb75882ba4d4fab62ee4d00"} , "case" : 5 , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}}
{ "_id" : { "$oid" : "4eb75882ba4d4fab62ee4d01"} , "case" : 6 , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}}
{ "_id" : { "$oid" : "4eb75882ba4d4fab62ee4d02"} , "case" : 7 , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}}
{ "_id" : { "$oid" : "4eb75882ba4d4fab62ee4d03"} , "case" : 8 , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}}
{ "_id" : { "$oid" : "4eb75882ba4d4fab62ee4d04"} , "case" : 9 , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}}
start remove all
done
start insert :
Insert End
Collections Find one:
{ "_id" : { "$oid" : "4eb75882ba4d4fab62ee4d05"} , "case" : 0 , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}}
Collections Find one end
start remove all
done
start insert :
Insert End
start query
result case=5:{ "_id" : { "$oid" : "4eb75882ba4d4fab62ee4d14"} , "case" : 5 , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}}
end query
case >5:{ "_id" : { "$oid" : "4eb75882ba4d4fab62ee4d15"} , "case" : 6 , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}}
case >5:{ "_id" : { "$oid" : "4eb75882ba4d4fab62ee4d16"} , "case" : 7 , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}}
case >5:{ "_id" : { "$oid" : "4eb75882ba4d4fab62ee4d17"} , "case" : 8 , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}}
case >5:{ "_id" : { "$oid" : "4eb75882ba4d4fab62ee4d18"} , "case" : 9 , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}}
start remove all
done
start insert :
Insert End
Index Info:{ "v" : 1 , "key" : { "_id" : 1} , "ns" : "test.things" , "name" : "_id_"}
Index Info:{ "v" : 1 , "key" : { "case" : 1} , "ns" : "test.things" , "name" : "case_1"}
Index Info:{ "v" : 1 , "key" : { "case" : -1} , "ns" : "test.things" , "name" : "case_-1"}
start remove all
done
6 Morphia
Java的OOP特性,决定Java使用mongo的时候无可避免的要使用到ORM特性。
Morphia 是当前几个支持MongoDb ORm的比较好用的一个。
项目地址 http://code.google.com/p/morphia/
下载地址 暂时最高版本 0.98
http://code.google.com/p/morphia/downloads/list
不废话,上Sample
import java.net.UnknownHostException; import com.google.code.morphia.Datastore; import com.google.code.morphia.Morphia; import com.google.code.morphia.query.Query; import com.google.code.morphia.query.UpdateOperations; import com.mongodb.DB; import com.mongodb.Mongo; import com.mongodb.MongoException; public class MorphiaTest { // main // public static void main(String[] args) { try { Mongo m = new Mongo("localhost"); DB db = m.getDB("test"); Morphia morphia = new Morphia(); morphia.map(Hotel.class).map(Address.class); Datastore ds = morphia.createDatastore(m, "test"); Hotel hotel = new Hotel(); hotel.setName("My Hotel123"); // hotel.setId(new ObjectId("4ea510c8b24d395248f1f97f")); hotel.setStars(90); Address address = new Address(); address.setStreet("123 Some street"); address.setCity("Some city"); address.setPostCode("123 456"); address.setCountry("2Some country"); // set address hotel.setAddress(address); // Save the POJO ds.save(hotel); // System.out.println(ds.find(Hotel.class, "stars >", 3)); Query q = ds.createQuery(Hotel.class).disableValidation() .disableValidation(); System.out.println(q.filter("id =", "4eb79c8cba4d913746120ae9").asList()); // delete POJO ds.delete(q); // update operation ds.save(hotel); UpdateOperations<Hotel> ops = ds.createUpdateOperations( Hotel.class).set("name", "New Name1"); ds.update(q, ops); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MongoException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
利用 Morphia 可以使用Mongo DB,集成到项目 的DAO
里面。最小成本地使用Nosql技术,满足实际的项目需求。
本文大多使用原官网的code作为例子。只作为入门参考,即使这不是一个很好的教程。
相关推荐
后续提交放在https://github.com/zdsiyan/watermelon 上, 用eclipse导入该工程需安装m2eclipse,jetty等查件. 另外.settings下的org.eclipse.wst.common.component文件如下: ...</project-modules>
图书管理系统,java+express+mongodb+nodejs+gulp.zip 图书管理系统,java+express+mongodb+nodejs+gulp.zip 图书管理系统,java+express+mongodb+nodejs+gulp.zip 图书管理系统,java+express+mongodb+nodejs+...
django+mongodb+hui 实现的后台管理系统.zipdjango+mongodb+hui 实现的后台管理系统.zipdjango+mongodb+hui 实现的后台管理系统.zipdjango+mongodb+hui 实现的后台管理系统.zipdjango+mongodb+hui 实现的后台管理...
综上所述,"SpringBoot+MongoDB+Echarts图表数据可视化"项目利用SpringBoot作为后端处理逻辑,MongoDB作为数据存储,Echarts作为前端数据展示工具,共同实现了高效、直观的数据可视化解决方案。这个组合在现代Web...
1、该资源内项目代码经过严格调试,下载即用确保可以运行! 2、该资源适合计算机相关专业(如计科、人工智能、大数据、数学、电子信息等)正在做课程设计、期末大作业和毕设项目的...基于MongoDB+Spark+ElasticSearch的电
标题中的“nodejs+express+mongodb+bootstrap+jquery+ejs写的电影demo”表明这是一个使用Node.js、Express框架、MongoDB数据库、Bootstrap前端框架、jQuery库以及EJS模板引擎开发的电影相关的应用程序示例。...
基于SpringBoot + Mybatis + Thymeleaf +Redis+MongoDB+MySQL开发的商品管理系统。基于SpringBoot + Mybatis + Thymeleaf +Redis+MongoDB+MySQL开发的商品管理系统。基于SpringBoot + Mybatis + Thymeleaf +Redis+...
基于node.js、vue、mongodb等技术构建的web系统,界面美观,功能齐全,适合用作毕业设计、课程设计作业等,项目均经过测试,可快速部署运行! 基于node.js、vue、mongodb等技术构建的web系统,界面美观,功能齐全,...
mongodb+maven+spring+springmvc项目源码,导入eclipse可运行 mongodb单独操作源码 初学的同学可以查阅http://www.runoob.com/mongodb/mongodb-java.html
, 《Node.js+MongoDB+AngularJS Web开发》为想要将这3 种技术整合到全面的有效解决方案的Web 程序员提供了完整指南。它简洁而清晰地介绍了这3 种技术,然后迅速转到构建几种常见的Web 应用程序上面。, 读者将学会...
基于springboot+vue+redis+mongodb+spark等大数据技术构建的图书推荐系统,课程设计项目,可用于毕设 后端 Spring Boot Redis MongoDB 前端 Vue Element-ui Axios 推荐服务 Spark Zookeeper Kafka Flume 任务调度 ...
基于NodeJS+Express+mongoDB+Bootstrap的全栈式工程化开发前后端分离博客系统实战
Node.js+MongoDB+AngularJS Web开发.zip 《Node.js + Mongodb + AngularJS web开发》--源代码(2015.09.04) 1.Node.js学习必备; 2.MongoDB学习必备; 3.Mongoose学习必备; 4.Express框架学习必备
基于SpringBoot + Mybatis + Thymeleaf + Redis + MongoDB + MySQL开发的商品管理系统 主要用到的技术: 使用maven进行项目构建 使用Springboot+Mybatis搭建整个系统 使用Thymeleaf模板技术实现页面静态化 使用框架...
SpringBoot 与 MongoDB 的整合主要通过 `spring-boot-starter-data-mongodb` 依赖实现,这使得我们能够轻松地进行 CRUD(创建、读取、更新、删除)操作。 Redis 是一个开源的、高性能的键值对数据存储系统,通常...
《NodeJS+MongoDB+AngularJS WEB开发原版》是一本深入探讨现代Web开发技术的书籍,特别关注了使用Node.js、MongoDB和AngularJS构建全栈应用的实践方法。Node.js是基于Chrome V8引擎的JavaScript运行环境,它允许...
基于node.js、vue、mongodb等技术构建的web系统,界面美观,功能齐全,适合用作毕业设计、课程设计作业等,项目均经过测试,可快速部署运行! 基于node.js、vue、mongodb等技术构建的web系统,界面美观,功能齐全,...
基于用户画像的电影推荐系统的源码+项目说明(高分课程设计)(Django为基础框架,采用MTV模式,数据库使用MongoDB+MySQL+Redis,从豆瓣爬取电影数据作为基础数据源).zip 基于用户画像的电影推荐系统的源码(Django...
使用mongodb完成数据存储,通过mongoose模块完成对mongodb数据的构建; 使用jade模板引擎完成页面创建渲染; 使用Moment.js格式化电影存储时间; 3、本地开发环境搭建: 使用gulp集成jshint对JS语法检查,加入browser...
在Java开发中,Morphia是一个优秀的对象数据映射(ODM)框架,它简化了与MongoDB之间的交互,使得开发者可以像操作传统关系型数据库那样操作文档数据库。本文将深入探讨如何使用Morphia框架来操作MongoDB。 首先,...