Java操作MongoDB
java驱动程序是Mongodb中的驱动程序之一,也是比较成熟的Mongodb驱动程序之一,下面介绍了使用java连接、操作Mongodb。
一、安装java驱动程序
Mongodb的java驱动程序是一个jar包,可以在:https://github.com/mongodb/mongo-java-driver/downloads 下载,下载的jar导入到eclipse的项目中即可。
二、java操作Mongodb
java操作Mongodb常用的几个类:
Mongo:连接服务器,执行一些数据库操作的选项,如新建立一个数据库等
DB:对应一个数据库,可以用来建立集合等操作
DBCollection:对应一个集合(类似表),可能是我们用得最多的,可以添加删除记录等
DBObject接口和BasicDBObject对象:表示一个具体的记录,BasicDBObject实现了DBObject,是key-value的数据结构,用起来和HashMap是基本一致的。
DBCursor:用来遍历取得的数据,实现了Iterable和Iterator
private static void mongodbOperating(){ try { //有多种构造方法,选择一种(IP、port) Mongo m = new Mongo( "192.168.21.111" , 27017 ); //选择数据库,如果没有这个数据库的话,会自动建立 DB db = m.getDB( "mydb" ); //建立一个集合,和数据库一样,如果没有,会自动建立 DBCollection collection = db.getCollection("myCollectionTest"); 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); //插入一条数据,数据如下 // { // "name" : "MongoDB", // "type" : "database", // "count" : 1, // "info" : { // x : 203, // y : 102 // } // } // 可以循环插入多条数据 collection.insert(doc); //查找第一条数据,显示如下,_id是系统自动帮加上的,全局唯一 //{ "_id" : "49902cde5162504500b45c2c" , "name" : "MongoDB" , "type" : "database" , "count" : 1 , "info" : { "x" : 203 , "y" : 102}} DBObject myDoc = collection.findOne(); System.out.println(myDoc); //插入多条数据 for (int i=0; i < 100; i++) { collection.insert(new BasicDBObject().append("i", i)); } //获取文档条数 System.out.println(collection.getCount()); //使用Cursor 获取所有文档 DBCursor cursor = collection.find(); try { while(cursor.hasNext()) { System.out.println(cursor.next()); } } finally { cursor.close(); } //查找操作,获取单条记录 //{ "_id" : "49903677516250c1008d624e" , "i" : 71 } BasicDBObject query = new BasicDBObject(); query.put("i", 71); cursor = collection.find(query); try { while(cursor.hasNext()) { System.out.println(cursor.next()); } } finally { cursor.close(); } //查找 i>50的项 query = new BasicDBObject(); query.put("i", new BasicDBObject("$gt", 50)); // e.g. find all where i > 50 cursor = collection.find(query); try { while(cursor.hasNext()) { System.out.println(cursor.next()); } } finally { cursor.close(); } //查找 20<i<=30 query = new BasicDBObject(); query.put("i", new BasicDBObject("$gt", 20).append("$lte", 30)); // i.e. 20 < i <= 30 cursor = collection.find(query); try { while(cursor.hasNext()) { System.out.println(cursor.next()); } } finally { cursor.close(); } //修改 i=71的一项 query = new BasicDBObject(); query.put("i", 71); BasicDBObject update = new BasicDBObject(); update.put("i", 710); DBObject dbobj = collection.findAndModify(query, update); System.out.println(dbobj); //修改 i=72的一项 query = new BasicDBObject(); query.put("i", 72); update = new BasicDBObject(); update.put("i", 720); WriteResult result = collection.update(query, update); System.out.println(result); //删除i=61的项 query = new BasicDBObject(); query.put("i", 61); collection.findAndRemove(query); //删除i=62的项 BasicDBObject remove = new BasicDBObject(); remove.put("i", 62); collection.remove(remove); //创建索引 1为升序、-1为降序 collection.createIndex(new BasicDBObject("i", 1)); // create index on "i", ascending //获取索引列表 List<DBObject> list = collection.getIndexInfo(); for (DBObject o : list) { System.out.println(o); } //获取数据库列表 for (String s : m.getDatabaseNames()) { System.out.println(s); } //获取集合列表 Set<String> colls = db.getCollectionNames(); for (String s : colls) { System.out.println(s); } //删除数据库 //m.dropDatabase("my_new_db"); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } }