服装企业 北京 网站建设,济南互联网网站建设价格,做网站名词,微商的自己做网站叫什么名字上一篇文章: http://blog.csdn.net/gaowenhui2008/article/details/40045719 介绍到了在MongoDB的控制台完成MongoDB的数据操作#xff0c;通过前一篇文章我们对MongoDB有了全面的认识和理解。现在我们就用Java来操作MongoDB的数据。 开发环境#xff1a;
System#xff1a…上一篇文章: http://blog.csdn.net/gaowenhui2008/article/details/40045719 介绍到了在MongoDB的控制台完成MongoDB的数据操作通过前一篇文章我们对MongoDB有了全面的认识和理解。现在我们就用Java来操作MongoDB的数据。 开发环境
SystemWindows
IDEeclipse、MyEclipse 8
DatabasemongoDB
开发依赖库
JavaEE5、mongo-2.5.3.jar、junit-4.8.2.jar 一、准备工作
1、 首先下载mongoDB对Java支持的驱动包
驱动包下载地址https://github.com/mongodb/mongo-java-driver/downloads
mongoDB对Java的相关支持、技术MongoDB Java Drivers — MongoDB Drivers
驱动源码下载https://download.github.com/mongodb-mongo-java-driver-r2.6.1-7-g6037357.zip
在线查看源码GitHub - mongodb/mongo-java-driver: The official Java driver for MongoDB
2、 下面建立一个JavaProject工程导入下载下来的驱动包。即可在Java中使用mongoDB目录如下 二、Java操作MongoDB示例
在本示例之前你需要启动mongod.exe的服务启动后下面的程序才能顺利执行 1、 建立SimpleTest.java完成简单的mongoDB数据库操作
Mongo mongo new Mongo();
这样就创建了一个MongoDB的数据库连接对象它默认连接到当前机器的localhost地址端口是27017。
DB db mongo.getDB(“test”);
这样就获得了一个test的数据库如果mongoDB中没有创建这个数据库也是可以正常运行的。如果你读过上一篇文章就知道mongoDB可以在没有创建这个数据库的情况下完成数据的添加操作。当添加的时候没有这个库mongoDB会自动创建当前数据库。
得到了db下一步我们要获取一个“聚集集合DBCollection”通过db对象的getCollection方法来完成。
DBCollection users db.getCollection(users);
这样就获得了一个DBCollection它相当于我们数据库的“表”。
查询所有数据
DBCursor cur users.find();
while (cur.hasNext()) {
System.out.println(cur.next());
} 完整源码 package com.hoo.test; import java.net.UnknownHostException; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.Mongo; import com.mongodb.MongoException; import com.mongodb.util.JSON; /** * bfunction:/bMongoDB 简单示例 * author gwh * createDate 2014-5-24 下午02:42:29 * file SimpleTest.java * package com.hoo.test * project MongoDB * email gwh_2014163.com * version 1.0 */ public class SimpleTest { public static void main(String[] args) throws UnknownHostException, MongoException { Mongo mg new Mongo(); //查询所有的Database for (String name : mg.getDatabaseNames()) { System.out.println(dbName: name); } DB db mg.getDB(test); //查询所有的聚集集合 for (String name : db.getCollectionNames()) { System.out.println(collectionName: name); } DBCollection users db.getCollection(users); //查询所有的数据 DBCursor cur users.find(); while (cur.hasNext()) { System.out.println(cur.next()); } System.out.println(cur.count()); System.out.println(cur.getCursorId()); System.out.println(JSON.serialize(cur)); } } 2、 完成CRUD操作首先建立一个MongoDB4CRUDTest.java基本测试代码如下 package com.hoo.test; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; import org.bson.types.ObjectId; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.mongodb.BasicDBObject; import com.mongodb.Bytes; 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.QueryOperators; import com.mongodb.util.JSON; /** * bfunction:/b实现MongoDB的CRUD操作 * author gwh * createDate 2014-6-2 下午03:21:23 * file MongoDB4CRUDTest.java * package com.hoo.test * project MongoDB * email gwh_2014163.com * version 1.0 */ public class MongoDB4CRUDTest { private Mongo mg null; private DB db; private DBCollection users; Before public void init() { try { mg new Mongo(); //mg new Mongo(localhost, 27017); } catch (UnknownHostException e) { e.printStackTrace(); } catch (MongoException e) { e.printStackTrace(); } //获取temp DB如果默认没有创建mongodb会自动创建 db mg.getDB(temp); //获取users DBCollection如果默认没有创建mongodb会自动创建 users db.getCollection(users); } After public void destory() { if (mg ! null) mg.close(); mg null; db null; users null; System.gc(); } public void print(Object o) { System.out.println(o); } } 3、 添加操作
在添加操作之前我们需要写个查询方法来查询所有的数据。代码如下 /** * bfunction:/b 查询所有数据 * author gwh * createDate 2014-6-2 下午03:22:40 */ private void queryAll() { print(查询users的所有数据); //db游标 DBCursor cur users.find(); while (cur.hasNext()) { print(cur.next()); } } Test public void add() { //先查询所有数据 queryAll(); print(count: users.count()); DBObject user new BasicDBObject(); user.put(name, hoojo); user.put(age, 24); //users.save(user)保存getN()获取影响行数 //print(users.save(user).getN()); //扩展字段随意添加字段不影响现有数据 user.put(sex, 男); print(users.save(user).getN()); //添加多条数据传递Array对象 print(users.insert(user, new BasicDBObject(name, tom)).getN()); //添加List集合 ListDBObject list new ArrayListDBObject(); list.add(user); DBObject user2 new BasicDBObject(name, lucy); user.put(age, 22); list.add(user2); //添加List集合 print(users.insert(list).getN()); //查询下数据看看是否添加成功 print(count: users.count()); queryAll(); } 4、 删除数据 Test public void remove() { queryAll(); print(删除id 4de73f7acd812d61b4626a77 users.remove(new BasicDBObject(_id, new ObjectId(4de73f7acd812d61b4626a77))).getN()); print(remove age 24: users.remove(new BasicDBObject(age, new BasicDBObject($gte, 24))).getN()); } 5、 修改数据 Test public void modify() { print(修改 users.update(new BasicDBObject(_id, new ObjectId(4dde25d06be7c53ffbd70906)), new BasicDBObject(age, 99)).getN()); print(修改 users.update( new BasicDBObject(_id, new ObjectId(4dde2b06feb038463ff09042)), new BasicDBObject(age, 121), true,//如果数据库不存在是否添加 false//多条修改 ).getN()); print(修改 users.update( new BasicDBObject(name, haha), new BasicDBObject(name, dingding), true,//如果数据库不存在是否添加 true//false只修改第一天true如果有多条就不修改 ).getN()); //当数据库不存在就不修改、不添加数据当多条数据就不修改 //print(修改多条 coll.updateMulti(new BasicDBObject(_id, new ObjectId(4dde23616be7c19df07db42c)), new BasicDBObject(name, 199))); } 6、 查询数据 Test public void query() { //查询所有 //queryAll(); //查询id 4de73f7acd812d61b4626a77 print(find id 4de73f7acd812d61b4626a77: users.find(new BasicDBObject(_id, new ObjectId(4de73f7acd812d61b4626a77))).toArray()); //查询age 24 print(find age 24: users.find(new BasicDBObject(age, 24)).toArray()); //查询age 24 print(find age 24: users.find(new BasicDBObject(age, new BasicDBObject($gte, 24))).toArray()); print(find age 24: users.find(new BasicDBObject(age, new BasicDBObject($lte, 24))).toArray()); print(查询age!25 users.find(new BasicDBObject(age, new BasicDBObject($ne, 25))).toArray()); print(查询age in 25/26/27 users.find(new BasicDBObject(age, new BasicDBObject(QueryOperators.IN, new int[] { 25, 26, 27 }))).toArray()); print(查询age not in 25/26/27 users.find(new BasicDBObject(age, new BasicDBObject(QueryOperators.NIN, new int[] { 25, 26, 27 }))).toArray()); print(查询age exists 排序 users.find(new BasicDBObject(age, new BasicDBObject(QueryOperators.EXISTS, true))).toArray()); print(只查询age属性 users.find(null, new BasicDBObject(age, true)).toArray()); print(只查属性 users.find(null, new BasicDBObject(age, true), 0, 2).toArray()); print(只查属性 users.find(null, new BasicDBObject(age, true), 0, 2, Bytes.QUERYOPTION_NOTIMEOUT).toArray()); //只查询一条数据多条去第一条 print(findOne: users.findOne()); print(findOne: users.findOne(new BasicDBObject(age, 26))); print(findOne: users.findOne(new BasicDBObject(age, 26), new BasicDBObject(name, true))); //查询修改、删除 print(findAndRemove 查询age25的数据并且删除: users.findAndRemove(new BasicDBObject(age, 25))); //查询age26的数据并且修改name的值为Abc print(findAndModify: users.findAndModify(new BasicDBObject(age, 26), new BasicDBObject(name, Abc))); print(findAndModify: users.findAndModify( new BasicDBObject(age, 28), //查询age28的数据 new BasicDBObject(name, true), //查询name属性 new BasicDBObject(age, true), //按照age排序 false, //是否删除true表示删除 new BasicDBObject(name, Abc), //修改的值将name修改成Abc true, true)); queryAll(); } mongoDB不支持联合查询、子查询这需要我们自己在程序中完成。将查询的结果集在Java查询中进行需要的过滤即可。 7、 其他操作 public void testOthers() { DBObject user new BasicDBObject(); user.put(name, hoojo); user.put(age, 24); //JSON 对象转换 print(serialize: JSON.serialize(user)); //反序列化 print(parse: JSON.parse({ /name/ : /hoojo/ , /age/ : 24})); print(判断temp Collection是否存在: db.collectionExists(temp)); //如果不存在就创建 if (!db.collectionExists(temp)) { DBObject options new BasicDBObject(); options.put(size, 20); options.put(capped, 20); options.put(max, 20); print(db.createCollection(account, options)); } //设置db为只读 db.setReadOnly(true); //只读不能写入数据 db.getCollection(test).save(user); } 好了这里基本上就介绍这么多Java操作MongoDB的方法。其他的东西还需要你自己多多研究。上面操作MongoDB的方法都是一些常用的方法比较简单。