TestCase.java
- package com.wujintao.mongo;
-
- import java.net.UnknownHostException;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Set;
- import java.util.regex.Pattern;
-
- import org.junit.Test;
-
- import com.mongodb.AggregationOutput;
- import com.mongodb.BasicDBList;
- import com.mongodb.BasicDBObject;
- import com.mongodb.BasicDBObjectBuilder;
- import com.mongodb.DB;
- import com.mongodb.DBCollection;
- import com.mongodb.DBCursor;
- import com.mongodb.DBObject;
- import com.mongodb.MapReduceCommand;
- import com.mongodb.MapReduceOutput;
- import com.mongodb.Mongo;
- import com.mongodb.QueryBuilder;
- import com.mongodb.WriteConcern;
-
- public class TestCase {
-
-
- @Test
-
- public void testGetDBS() {
- List<String> dbnames = MongoUtil.getMong().getDatabaseNames();
- for (String dbname : dbnames) {
- System.out.println("dbname:" + dbname);
- }
- }
-
- @Test
-
- public void dropDatabase() {
- MongoUtil.getMong().dropDatabase("my_new_db");
- }
-
- @Test
-
- public void getAllCollections() {
- Set<String> colls = MongoUtil.getDB().getCollectionNames();
- for (String s : colls) {
- System.out.println(s);
- }
- }
-
- @Test
- public void dropCollection() {
- MongoUtil.getColl("jellonwu").drop();
- }
-
-
- @Test
- public void addData() {
- DBCollection coll = MongoUtil.getColl("wujintao");
- 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);
- coll.insert(doc);
-
- coll.setWriteConcern(WriteConcern.SAFE);
- }
-
- @Test
-
- public void createIndex() {
- MongoUtil.getColl("wujintao").createIndex(new BasicDBObject("i", 1));
- }
-
- @Test
-
- public void getIndexInfo() {
- List<DBObject> list = MongoUtil.getColl("hems_online").getIndexInfo();
- for (DBObject o : list) {
- System.out.println(o);
- }
- }
-
- @Test
-
- public void addMultiData() {
- for (int i = 0; i < 100; i++) {
- MongoUtil.getColl("wujintao").insert(
- new BasicDBObject().append("i", i));
- }
-
- List<DBObject> docs = new ArrayList<DBObject>();
- for (int i = 0; i < 50; i++) {
- docs.add(new BasicDBObject().append("i", i));
- }
- MongoUtil.getColl("wujintao").insert(docs);
-
- MongoUtil.getColl("wujintao").setWriteConcern(WriteConcern.SAFE);
- }
-
- @Test
-
- public void findOne() {
- DBObject myDoc = MongoUtil.getColl("wujintao").findOne();
- System.out.println(myDoc);
- }
-
- @Test
-
- public void count() {
- System.out.println(MongoUtil.getColl("wujintao").getCount());
- System.out.println(MongoUtil.getColl("wujintao").count());
- }
-
- @Test
-
- public void getCount() {
- DBObject query = new BasicDBObject("name", "a");
- long count = MongoUtil.getColl("wujintao").count(query);
- System.out.println(count);
- }
-
- @Test
-
- public void getAllDocuments() {
- DBCursor cursor = MongoUtil.getColl("wujintao").find();
- try {
- while (cursor.hasNext()) {
- System.out.println(cursor.next());
- }
- } finally {
- cursor.close();
- }
- }
-
- @Test
-
- public void queryByConditionOne() {
- BasicDBObject query = new BasicDBObject();
- query.put("name", "MongoDB");
- DBCursor cursor = MongoUtil.getColl("wujintao").find(query);
-
- try {
- while (cursor.hasNext()) {
- System.out.println(cursor.next());
- }
- } finally {
- cursor.close();
- }
- }
-
- @Test
-
- public void queryMulti() {
- BasicDBObject query = new BasicDBObject();
-
- query.put("j", new BasicDBObject("$ne", 3));
- query.put("k", new BasicDBObject("$gt", 10));
- DBCursor cursor = MongoUtil.getColl("wujintao").find(query);
- try {
- while (cursor.hasNext()) {
- System.out.println(cursor.next());
- }
- } finally {
- cursor.close();
- }
- }
-
- @Test
-
- public void queryMulti2() {
- BasicDBObject query = new BasicDBObject();
- query = new BasicDBObject();
- query.put("i", new BasicDBObject("$gt", 50));
- DBCursor cursor = MongoUtil.getColl("wujintao").find(query);
- try {
- while (cursor.hasNext()) {
- System.out.println(cursor.next());
- }
- } finally {
- cursor.close();
- }
- }
-
- @Test
-
- public void queryMulti3() {
- BasicDBObject query = new BasicDBObject();
- query = new BasicDBObject();
-
- query.put("i", new BasicDBObject("$gt", 20).append("$lte", 30));
- DBCursor cursor = MongoUtil.getColl("wujintao").find(query);
- try {
- while (cursor.hasNext()) {
- System.out.println(cursor.next());
- }
- } finally {
- cursor.close();
- }
- }
-
-
- public void queryMulti4() {
- BasicDBObject query11 = new BasicDBObject();
- query11.put("a", 1);
- BasicDBObject query12 = new BasicDBObject();
- query12.put("b", 2);
- List<BasicDBObject> orQueryList1 = new ArrayList<BasicDBObject>();
- orQueryList1.add(query11);
- orQueryList1.add(query12);
- BasicDBObject orQuery1 = new BasicDBObject("$or", orQueryList1);
-
- BasicDBObject query21 = new BasicDBObject();
- query21.put("c", 5);
- BasicDBObject query22 = new BasicDBObject();
- query22.put("d", 6);
- List<BasicDBObject> orQueryList2 = new ArrayList<BasicDBObject>();
- orQueryList2.add(query21);
- orQueryList2.add(query22);
- BasicDBObject orQuery2 = new BasicDBObject("$or", orQueryList2);
-
- List<BasicDBObject> orQueryCombinationList = new ArrayList<BasicDBObject>();
- orQueryCombinationList.add(orQuery1);
- orQueryCombinationList.add(orQuery2);
-
- BasicDBObject finalQuery = new BasicDBObject("$and",
- orQueryCombinationList);
- DBCursor cursor = MongoUtil.getColl("wujintao").find(finalQuery);
- }
-
- @Test
-
- public void queryIn() {
- BasicDBList values = new BasicDBList();
- values.add("a");
- values.add("b");
- BasicDBObject in = new BasicDBObject("$in", values);
- DBCursor cursor = MongoUtil.getColl("wujintao").find(
- new BasicDBObject("name", in));
- try {
- while (cursor.hasNext()) {
- System.out.println(cursor.next());
- }
- } finally {
- cursor.close();
- }
- }
-
- @Test
-
- public void queryOr() {
- QueryBuilder query = new QueryBuilder();
- query.or(new BasicDBObject("name", 12), new BasicDBObject("title", "p"));
- DBCursor cursor = MongoUtil.getColl("wujintao").find(query.get()).addSpecial("$returnKey", "");
- try {
- while (cursor.hasNext()) {
- System.out.println(cursor.next());
- }
- } finally {
- cursor.close();
- }
- }
-
- @Test
- public void customQueryField() throws UnknownHostException{
- Mongo mongo = new Mongo("localhost", 27017);
- DB db = mongo.getDB("zhongsou_ad");
- BasicDBObjectBuilder bulder = new BasicDBObjectBuilder();
- bulder.add("times",1);
- bulder.add("aid",1);
- DBCursor cusor = db.getCollection("ad_union_ad_c_1").find(new BasicDBObject(),bulder.get());
- for (DBObject dbObject : cusor) {
- System.out.println(dbObject);
- }
- }
-
- @Test
- public void mapReduce() throws UnknownHostException{
- Mongo mongo = new Mongo("localhost", 27017);
- DB db = mongo.getDB("zhongsou_ad");
-
- try {
-
- DBCollection books = db.getCollection("books");
-
- BasicDBObject book = new BasicDBObject();
- book.put("name", "Understanding JAVA");
- book.put("pages", 100);
- books.insert(book);
-
- book = new BasicDBObject();
- book.put("name", "Understanding JSON");
- book.put("pages", 200);
- books.insert(book);
-
- book = new BasicDBObject();
- book.put("name", "Understanding XML");
- book.put("pages", 300);
- books.insert(book);
-
- book = new BasicDBObject();
- book.put("name", "Understanding Web Services");
- book.put("pages", 400);
- books.insert(book);
-
- book = new BasicDBObject();
- book.put("name", "Understanding Axis2");
- book.put("pages", 150);
- books.insert(book);
-
- String map = "function() { "+
- "var category; " +
- "if ( this.pages >= 250 ) "+
- "category = ‘Big Books‘; " +
- "else " +
- "category = ‘Small Books‘; "+
- "emit(category, {name: this.name});}";
-
- String reduce = "function(key, values) { " +
- "var sum = 0; " +
- "values.forEach(function(doc) { " +
- "sum += 1; "+
- "}); " +
- "return {books: sum};} ";
-
- MapReduceCommand cmd = new MapReduceCommand(books, map, reduce,
- null, MapReduceCommand.OutputType.INLINE, null);
-
- MapReduceOutput out = books.mapReduce(cmd);
-
- for (DBObject o : out.results()) {
- System.out.println(o.toString());
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- @Test
- public void GroupByManyField() throws UnknownHostException{
-
- Mongo mongo = new Mongo("localhost", 27017);
- DB db = mongo.getDB("libary");
- DBCollection books = db.getCollection("books");
- BasicDBObject groupKeys = new BasicDBObject();
- groupKeys.put("total", new BasicDBObject("$sum","pages"));
-
- BasicDBObject condition = new BasicDBObject();
- condition.append("pages", new BasicDBObject().put("$gt", 0));
-
-
- String reduce = "function(key, values) { " +
- "var sum = 0; " +
- "values.forEach(function(doc) { " +
- "sum += 1; "+
- "}); " +
- "return {books: sum};} ";
-
- DBObject obj = books.group(groupKeys, condition, new BasicDBObject(), reduce);
- System.out.println(obj);
-
- AggregationOutput ouput = books.aggregate(new BasicDBObject("$group",groupKeys));
- System.out.println(ouput.getCommandResult());
- System.out.println(books.find(new BasicDBObject("$group",groupKeys)));
- }
-
-
- @Test
-
- public void pageQuery() {
- DBCursor cursor = MongoUtil.getColl("wujintao").find().skip(0)
- .limit(10);
- while (cursor.hasNext()) {
- System.out.println(cursor.next());
- }
- }
-
-
- public void likeQuery() {
- Pattern john = Pattern.compile("joh?n");
- BasicDBObject query = new BasicDBObject("name", john);
-
-
- DBCursor cursor = MongoUtil.getColl("wujintao").find(query);
- }
-
- @Test
-
- public void delete() {
- BasicDBObject query = new BasicDBObject();
- query.put("name", "xxx");
-
- DBObject removeObj = MongoUtil.getColl("wujintao").findAndRemove(query);
- System.out.println(removeObj);
- }
-
- @Test
-
- public void update() {
- BasicDBObject query = new BasicDBObject();
- query.put("name", "liu");
- DBObject stuFound = MongoUtil.getColl("wujintao").findOne(query);
- stuFound.put("name", stuFound.get("name") + "update_1");
- MongoUtil.getColl("wujintao").update(query, stuFound);
- }
-
-
- }
这里面涉及到的MongoUtil.java如下:
- package com.wujintao.mongo;
-
- import java.net.UnknownHostException;
-
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
-
- import com.mongodb.DB;
- import com.mongodb.DBCollection;
- import com.mongodb.Mongo;
-
-
- public class MongoUtil{
-
- private static Mongo mongo;
- private static DBCollection coll;
- private static Log log = LogFactory.getLog(MongoUtil.class);
- private static DB db;
-
- static{
- try {
- MongoOptions options = new MongoOptions();
- options.autoConnectRetry = true;
- options.connectionsPerHost = 1000;
- options.maxWaitTime = 5000;
- options.socketTimeout = 0;
- options.connectTimeout = 15000;
- options.threadsAllowedToBlockForConnectionMultiplier = 5000;
-
- mongo = new Mongo(new ServerAddress(DBMongoConfig.getHost(),DBMongoConfig.getPort()),options);
-
-
-
-
-
-
-
-
-
-
- } catch (UnknownHostException e) {
- log.info("get mongo instance failed");
- }
- }
-
- public static DB getDB(){
- if(db==null){
- db = mongo.getDB(DBMongoConfig.getDbname());
- }
- return db;
- }
-
-
- public static Mongo getMong(){
- return mongo;
- }
-
- public static DBCollection getColl(String collname){
- return getDB().getCollection(collname);
- }
-
- }
MongoDB基本用法(增删改高级查询、mapreduce)
原文:http://www.cnblogs.com/dyc-cfc/p/4253404.html