Mongdb 简单增删改查
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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 | package test.com; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map.Entry; import java.util.Set; import org.bson.types.ObjectId; 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.MongoClient; import com.mongodb.MongoClientOptions; import com.mongodb.MongoCredential; import com.mongodb.ServerAddress; import com.mongodb.util.JSON; public class MongdbUtil { public static void main(String[] args) throws Exception { // insertInto(); // delete(); // updateData(); searchData(); } private static DB db; // 数据库 private static DBCollection coll; // 文档集(表) public static void insertInto() throws Exception { MongoClient mongoClient = getMongoClient(); db = mongoClient.getDB( "testdb1" ); // 获取数据库 coll = db.getCollection( "mongodb16wifi" ); // 获取文档集,相当于表 BasicDBObject document = new BasicDBObject(); // 创建文档,相当于对象。文档集中存放大量文档(对象) document.put( "database" , "testdb" ); document.put( "table" , "hosting" ); BasicDBObject documentDetail = new BasicDBObject(); // 对象中又包含对象 documentDetail.put( "records" , "99" ); documentDetail.put( "index" , "vps_index1" ); documentDetail.put( "active" , "true" ); document.put( "detail" , documentDetail); coll.insert(document); } /** * 删除 */ public static void delete() throws Exception { MongoClient mongoClient = getMongoClient(); db = mongoClient.getDB( "testdb1" ); // 获取数据库 coll = db.getCollection( "mongodb16wifi" ); // 获取文档集,相当于表 BasicDBObject data = new BasicDBObject(); // 删除名称为lucy的记录 data.put( "table" , "hosting" ); // 传入[空实例]删除所有 coll.remove(data); } /** * 修改数据 * * @throws Exception */ public static void updateData() throws Exception { MongoClient mongoClient = getMongoClient(); db = mongoClient.getDB( "testdb1" ); // 获取数据库 coll = db.getCollection( "mongodb16wifi" ); // 获取文档集,相当于表 BasicDBObject query = new BasicDBObject(); query.put( "table" , "hosting" ); // 这里的new_info对象一定要是find出的而不是new的,否则多字段的情况下就会丢失其它字段信息 // findone,只查询表中第一个符合条件的对象 DBObject new_info = coll.findOne(query); // 方法(优点,只需设置要修改的字段的值) DBObject obj = (DBObject) new_info. get ( "detail" ); obj.put( "records" , 1.5); coll.update(query, new_info); } /** * 查询数据 * * @throws Exception */ public static void searchData() throws Exception { MongoClient mongoClient = getMongoClient(); db = mongoClient.getDB( "testdb1" ); // 获取数据库 coll = db.getCollection( "mongodb16wifi" ); // 获取文档集,相当于表 // 获取数据库下所有的collection,不显示无数据的collection Set<String> colls = db.getCollectionNames(); showData(colls); // 查询coll中全部记录 DBCursor ite = coll.find(); //showData(ite); // 获取第一条记录 DBObject o = coll.findOne(); System. out .println(o); // 统计colletion的数据条数 System. out .println(coll.getCount()); // 查询 name为jack的对象 BasicDBObject query = new BasicDBObject(); query.put( "name" , "jack" ); DBCursor it = coll.find(query); showData(it); // 查询age小于30,age不等于20的对象 BasicDBObject query2 = new BasicDBObject(); query2.put( "age" , new BasicDBObject( "$lt" , 30)); query2.put( "age" , new BasicDBObject( "$ne" , 20)); DBCursor cursor = coll.find(query2); /** * 遍历查询结果集。(这种遍历方式相比较Iterator遍历,简单且高效) */ while (cursor.hasNext()) { DBObject dbObj = cursor.next(); //System.out.println(dbObj.get("database"));//字符串格式 System. out .println(dbObj. get ( "detail" )); //json格式 } } /** * 遍历显示结果 * * @param result */ @SuppressWarnings( "rawtypes" ) public static void showData(Iterable result) { Iterator it = result.iterator(); while (it.hasNext()) { System. out .println(it.next()); } } // 获取Mongdb 连接 private static MongoClient getMongoClient() throws Exception { try { String sIp = "localhost" ; int iPort = 27017; String sUser = "testdb1u1" ; String sPasword = "xyz123" ; // ===================================================// List<ServerAddress> serverList = new ArrayList<ServerAddress>(); serverList.add( new ServerAddress(sIp, iPort)); // ===================================================// List<MongoCredential> mcList = new ArrayList<MongoCredential>(); // 用户名,库名,密码 mcList.add(MongoCredential.createCredential(sUser, "testdb1" , sPasword.toCharArray())); // ===================================================// MongoClientOptions.Builder builder = MongoClientOptions.builder(); // 与目标数据库能够建立的最大connection数量为50 builder.connectionsPerHost(50); // 如果当前所有的connection都在使用中,则每个connection上可以有50个线程排队等待 builder.threadsAllowedToBlockForConnectionMultiplier(50); // 故这里设置的maxWaitTime应该足够大,以免由于排队线程过多造成的数据库访问失败 builder.maxWaitTime(1000 * 60 * 2); // 与数据库建立连接的timeout设置为1分钟 builder.connectTimeout(1000 * 60 * 1); // ===================================================// MongoClientOptions mco = builder.build(); return new MongoClient(serverList, mcList, mco); } catch (Exception e) { throw e; } } } |