MongoDB的Java驱动已经提供比较全的操作,分为三块:
1.普通用户操作
2.管理员操作
3.oplog操作
具体可以添加一个eclipse testng插件,再在工程中导入testng.jar包即可看到。
本文主要说明各个使用点和注意事项。
1.连接一个复制集(replica sets)mongod:
-
复制集是mongo解决稳定性的一个方案,也是可以实现读写分离的一种实现,这里介绍复制集的java连接方式。
[java]
1. static Mongo m;
2.
3. static { 4. List<ServerAddress> addresslist = new ArrayList<ServerAddress>(); 5. try { 6. addresslist.add(new ServerAddress("127.0.0.1:10240")); 7. addresslist.add(new ServerAddress("127.0.0.1:11240")); 8. addresslist.add(new ServerAddress("127.0.0.1:12240")); 9. } catch (UnknownHostException e) { 10. System.err.println("address check error."); 11. System.exit(-1); 12. }
13.
14. MongoOptions options = new MongoOptions(); 15. options.autoConnectRetry = true; 16. options.connectionsPerHost = 20; 17. options.connectTimeout = 6000; 18. options.maxAutoConnectRetryTime = 12000; 19. options.maxWaitTime = 12000; 20. options.socketKeepAlive = true; 21. options.socketTimeout = 2000; 22.
23. try { 24. m = new Mongo(addresslist, options); 25. } catch (MongoException e) { 26. System.err.println("mongo create error."); 27. System.exit(-1); 28. }
29. }
注:一般例子采用的连接方式是直接连一个mongod服务,但是作为单台的生产环境显然安全性不足,因此采用复制集方式,连接也区别于一般,是使用
[java]
1.public Mongo( List<ServerAddress> replicaSetSeeds , MongoOptions options ) throws MongoException
方法。
MongoOptions根据自己的需求设置,参数说明已经很多了,不细讲。
注意mongo实例使用单例模式。
2.获取db:
[java]
1.DB db = m.getDB("test");
注:取到名为test的db进行操作;若该db不存在,该操作会创建对应的db。
3.获取集合:
[java]
1.DBCollection col = db.getCollection("offer");
注:取名字为offer的集合;类似于db的表。
以上三个操作是建立连接,接下去才是db中常用的操作。
4.查询:
[java]
1.DBCursor cursor = col.find();
2.while(cursor.hasNext()) { 3. System.out.println(cursor.next());
4. i++;
5.}
注:全集合查询,输出每条记录,正常情况不会作类似操作,记住两个东西,find()和cursor
[java]
1.BasicDBObject query = new BasicDBObject();
2.query = new BasicDBObject(); 3.query.put("i", new BasicDBObject("$gt", 20).append("$lte", 30)); // i.e. 20 < i <= 30 4.<pre name="code" class="java"> DBCursor cur = coll.find(query); 5.while(cur.hasNext()) { 6. System.out.println(cur.next());
7.}
注:查询指定条件的offer信息。
[java]
1.DBObject tmpdoc = col.findOne(doc);
注:查询单条记录;在很明确一条记录有且只有一条时,findOne()比较方便,免得游标移动麻烦。
5.更新:
[java]
1.DBObject tmpdoc = col.findOne(doc);
2.tmpdoc.put("i", (Integer)tmpdoc.get("i")+1); 3.System.out.println("update obj: " + col.findOne(tmpdoc)); 注:更新一条记录,先整个读出再更新部分信息再写入,切记不要读出一部分更新回去。
6.插入:
[java]
1.int i=1000;
2.BasicDBObject doc = new BasicDBObject(); 3.doc.put("i", i+1); 4.col.insert(doc);
5.System.out.println("insert obj: " + col.findOne(doc)); 注:插入一条记录{i:1001},_id自动生成。
7.删除:
[java]
1.BasicDBObject doc = new BasicDBObject();
2.doc.put("i", i+1); 3.
4.col.remove(doc);
5.System.out.println("insert obj: " + col.findOne(doc)); 注:删除一条记录。
本文出自:亿恩科技【www.enkj.com】
服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]
|