`

NoSql之MongoDB的常用类管理

阅读更多
1、DBCollection的管理
package com.boonya.mongo;
import java.util.Set;
import com.mongodb.DBCollection;
public class CollectionManager {
	
	public static DBCollection  getDbCollection(String collectionName){
		return DBConnection.getInstance().getCollection(collectionName.equals("")?"myCollection":collectionName);
	}
	
	public String getCollectionNames(){
		String strNames="";
		Set<String> colls =DBConnection.getInstance().getCollectionNames();
		for (String cname : colls) {
			strNames+=cname+",";
		}
		return strNames;
	}

}

2、并发操作管理
package com.boonya.mongo;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.WriteConcern;

public class ConcurrencyManager {
	
	private static DBCollection coll= CollectionManager.getDbCollection("myCollection");
	
	/**
	 * If you want to ensure complete consistency in a “session” (maybe an http request), 
	 * you would want the driver to use the same socket, which you can achieve by using a
	 * “consistent request”. Call requestStart() before your operations and requestDone()
	 * to release the connection back to the pool:
	 * DB and DBCollection are completely thread safe. In fact, they are cached so you get
	 * the same instance no matter what
	 */
	public void insertData(){
		DB db=DBConnection.getInstance();
		db.requestStart();
		try {
			db.requestEnsureConnection();
			//do something
		} finally {
			db.requestDone();
		}

	}
	
	/**
	 * Since by default a connection is given back to the pool after each request, you may 
	 * wonder how calling getLastError() works after a write. You should actually use a 
	 * write concern like WriteConcern.SAFE instead of calling getLastError() manually. 
	 * The driver will then call getLastError() before putting the connection back in the pool.
	 * 
	 * WriteConcern.NONE            No exceptions thrown. 
     * WriteConcern.NORMAL          Exceptions are only thrown when the primary node is unreachable for
     *                              a read, or the full replica set is unreachable. 
     * WriteConcern.SAFE            Same as the above, but exceptions thrown when there is a server error
     *                              on writes or reads. Calls getLastError(). 
     * WriteConcern.REPLICAS_SAFE   Tries to write to two separate nodes. Same as the above, but
     *                              will throw an exception if two writes are not possible. 
     * WriteConcern.FSYNC_SAFE      Same  as WriteConcern.SAFE, but also waits for write to be written to disk. 
     *
	 */
	public void writeConcern(){
		coll.insert(new BasicDBObject("name","boonya").append("age", 21), WriteConcern.SAFE);

		// is equivalent to

		DB db=DBConnection.getInstance();
		DBCollection coll=CollectionManager.getDbCollection("myCollection");
		db.requestStart();
		try {
		   coll.insert(new BasicDBObject("name","boonya").append("age", 21));
		   DBObject err = db.getLastError();
		   System.out.println(err);
		} finally {
		   db.requestDone();
		}

	}

}

3、数据库管理
package com.boonya.mongo;
import java.net.UnknownHostException;
import com.mongodb.MongoClient;
public class DatabaseManager {
	
	public String getDatabaseNames() throws UnknownHostException{
		String strNames="";
		MongoClient mongoClient;
		mongoClient = new MongoClient();
		for (String name : mongoClient.getDatabaseNames()) {
			  strNames+=name+",";
		}
		return strNames;
	}
	
	public void  dropDatabase(String databaseName) throws UnknownHostException{
	     MongoClient mongoClient = new MongoClient();
	     mongoClient.dropDatabase(databaseName);
	}

}

4、文档管理
package com.boonya.mongo;
import java.util.ArrayList;
import java.util.List;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
public class DocumentManager {
	
	private static DBCollection coll= CollectionManager.getDbCollection("myCollection");
	
	public void insertADocument(){
		BasicDBObject doc = new BasicDBObject("name", "MongoDB").append("type", "database")
			.append("count", 1)
			.append("info", new BasicDBObject("x", 203).append("y", 102));
         coll.insert(doc);
	}
	
	/**
	 * PRINT BELOW:
	 * { "_id" : "49902cde5162504500b45c2c" ,
     * "name" : "MongoDB" ,
     * "type" : "database" ,
     *  "count" : 1 ,
     *  "info" : { "x" : 203 , "y" : 102}}
	 * @return
	 */
	public DBObject findTheFirstDocument(){
		System.out.println("collection count:"+coll.getCount());
		DBObject myDoc = coll.findOne();
		System.out.println(myDoc);
        return myDoc;
	}
	
    public List<DBObject> getADocumentsByCursor(){
    	List<DBObject> docs=new ArrayList<DBObject>();
    	DBCursor cursor =coll.find();
    	try {
    	   while(cursor.hasNext()) {
    		   DBObject obj=cursor.next();
    	       System.out.println(obj);
    	       docs.add(obj);
    	   }
    	   return docs;
    	} finally {
    	   cursor.close();
    	}
	}
    
    /**
     * PRINT LIKE THIS:
     * { "_id" : "49903677516250c1008d624e" , "i" : 71 }
     */
    public void queryADocument(){
    	BasicDBObject query = new BasicDBObject("i", 71);
    	DBCursor cursor =coll.find();
    	cursor = coll.find(query);
    	try {
    	   while(cursor.hasNext()) {
    	       System.out.println(cursor.next());
    	   }
    	} finally {
    	   cursor.close();
    	}
    }
    
    public void  editQueryRegular(){
    	//db.things.find({j: {$ne: 3}, k: {$gt: 10} });
    	BasicDBObject query = new BasicDBObject("j", new BasicDBObject("$ne", 3)
    	       .append("k", new BasicDBObject("$gt", 10)));
    	DBCursor cursor = coll.find(query);
        try {
        	while(cursor.hasNext()) {
        	  System.out.println(cursor.next());
            }
        } finally {
        	cursor.close();
        }
    }
    
    public void getAsetDocument(){
    	BasicDBObject query = new BasicDBObject("i", new BasicDBObject("$gt", 50));  // e.g. find all where i > 50
//    	query = new BasicDBObject("i", new BasicDBObject("$gt", 20).
//                append("$lte", 30));  // i.e.   20 < i <= 30
    	DBCursor  cursor = coll.find(query);
    	try {
    	   while(cursor.hasNext()) {
    	       System.out.println(cursor.next());
    	   }
    	} finally {
    	   cursor.close();
    	}
    }
	

}

5、索引管理
package com.boonya.mongo;
import java.util.List;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;

public class IndexManager {
	
	private static DBCollection coll= CollectionManager.getDbCollection("myCollection");
	
	public void createIndex(){
		// create index on "i", ascending
		coll.createIndex(new BasicDBObject("i", 1));
	}
	
	public List<DBObject> getIndexList(){
		List<DBObject> list = coll.getIndexInfo();
		for (DBObject o : list) {
		   System.out.println(o);
		   list.add(o);
		}
		return list;
	}

}

6、预读取机制
package com.boonya.mongo;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.ReadPreference;
public class ReadPreferences {
	
	private static DBCollection coll= CollectionManager.getDbCollection("myCollection");
	
	/**
	 * ReadPreference.primary();
     * ReadPreference.primaryPreferred();
     * ReadPreference.secondary();
     * ReadPreference.secondaryPreferred();
     * ReadPreference.nearest();
	 */
	public void read(){
		DBObject query = new BasicDBObject("name", "simple doc");
		
		//Read from primary if available, otherwise a secondary.
		ReadPreference preference = ReadPreference.primaryPreferred();
		DBCursor cur = new DBCursor(coll, query, (DBObject) preference);
		
		//Read from any member node from the set of nodes which respond the fastest. 
		//The responsiveness of a node is measured with pings. Any node whose ping 
		//time is within 15 milliseconds of the node with the lowest ping time is considered near.
		DBObject result =coll.findOne(query, (DBObject) ReadPreference.nearest());
		
		
		// initialize a properly tagged read preference
		ReadPreference tagged_pref =ReadPreference.secondaryPreferred(new BasicDBObject("datacenter", "Los Angeles"));

		// include the tagged read preference in this request}}
		DBObject result1=coll.findOne(new BasicDBObject("name", "simple doc"), (DBObject) tagged_pref);
        
		// read from either LA or US_West
		DBObject tagSetOne = new BasicDBObject("datacenter", "Los Angeles");
		DBObject tagSetTwo = new BasicDBObject("region", "US_West");
		ReadPreference pref =ReadPreference.primaryPreferred(tagSetOne, tagSetTwo);

	}

}
分享到:
评论

相关推荐

    nosql之MOngoDB,java测试类,涵盖常用方法

    MongoDB是一种流行的开源、分布式NoSQL数据库系统,以其高性能、高可用性和可扩展性而备受赞誉。MongoDB采用文档型数据模型,支持JSON格式的数据存储,使得它在处理半结构化和非结构化数据时非常灵活。在这个Java...

    NoSQL数据库-MongoDB和Redis

    - **MongoDB常用API总结**:提供了一系列API,包括插入、查询、更新和删除等操作。 - **Redis命令总结**:覆盖了连接操作、数据操作、持久化策略等方面的常用命令。 通过对MongoDB和Redis这两种NoSQL数据库的详细...

    Linux运维-03-NoSQL数据库之MongoDB-03配置.zip

    MongoDB是一种流行的开源NoSQL数据库,它以JSON格式存储数据,具有高性能、高可用性和可扩展性的特点。在Linux环境中,MongoDB的配置是运维工作中的重要环节,它关系到数据库的稳定运行和性能优化。本篇将深入探讨...

    MongoDB数据库管理工具

    MongoDB是一款流行且功能强大的NoSQL数据库系统,以其灵活性、高性能和易扩展性而闻名。MongoDB数据库管理工具则是为了帮助用户更有效地管理和操作MongoDB数据库而设计的软件。MongoVUE是其中的一款常用工具,它提供...

    如何安装MongoDB 如何使用MongoDB

    本课程是一套关于MongoDB应用开发的实战性教程,名为《深入浅出...学员从中可领会到MongoDB设计的精妙之处,体会到MongoDB强大的类sql查询语言,感受到MongoDB与其它Nosql数据库的异同之处。(教程下载地址在文本里面)

    mongodb常用管理命令.pdf

    接下来将详细介绍文档中出现的MongoDB常用管理命令及其相关的知识点。 1. 启动MongoDB服务 - `mongod` 是MongoDB数据库服务器的命令行工具,用于启动数据库实例。 - 通常需要指定`--dbpath`参数来指定数据库存储...

    MongoDB进阶与实战:微服务整合、性能优化、架构管理.docx

    MongoDB 是一种流行的开源非关系型数据库(NoSQL),它以文档为模型,使用类似于 JSON 的 BSON 格式进行数据存储。MongoDB 具有强大的查询和索引功能,并且支持各种语言的驱动程序,例如 Java、Python、C#等。在...

    mongodb 数据库基本操作 使用MongoDB Python操作NoSQL数据库

    Python是与MongoDB交互的常用编程语言之一,提供了PyMongo库,使得在Python环境中操作MongoDB变得简单易行。在这个话题中,我们将探讨如何使用Python进行MongoDB的基本操作,包括连接数据库、创建集合、插入文档、...

    掌握MongoDB:NoSQL数据库基础与高级特性教程.rar

    什么是 MongoDB MongoDB 简介 MongoDB 特点 安装与配置 安装 MongoDB 启动与配置 MongoDB 基本操作 数据库和集合 文档操作 查询操作 基本查询 高级查询 索引与性能优化 创建索引 索引类型 索引优化 聚合操作 聚合...

    C#MongoDb操作工具类

    在.NET开发环境中,C#是一种常用的编程语言,而MongoDB则是一种流行的NoSQL数据库系统,以其灵活的数据模型和高性能著称。"C#MongoDb操作工具类"是将C#与MongoDB结合,用于简化数据库操作的一组自定义类。通过这样的...

    spring-data使用mongodbTemplate对MongoDB进行读写操作

    这个库是Spring Data框架的一部分,旨在简化数据访问层的实现,尤其在使用NoSQL数据库如MongoDB时。MongoDBTemplate是Spring Data MongoDB的核心组件,它提供了丰富的API来执行常见的数据库操作。 首先,让我们深入...

    实验四:NoSQL和关系数据库的操作比较

    对于NoSQL数据库HBase、Redis和MongoDB,虽然没有提供具体的操作步骤,但通常它们的使用包括安装相应的客户端工具,学习其特定的命令行语法或者Java API,例如HBase的HBase Shell、Redis的`redis-cli`和MongoDB的...

    MongoDB之查询详解

    在NoSQL数据库的世界里,MongoDB因其灵活的数据模型、高性能和可扩展性而备受青睐。查询作为数据库操作中最基础也是最重要的功能之一,在MongoDB中同样有着丰富的语法支持。本文将详细介绍MongoDB中的查询功能,包括...

    MongoDB常用SQL操作.pdf

    MongoDB是当前流行的NoSQL数据库之一,它以其高性能、易扩展、高可用性的特点,得到了众多开发者的青睐。作为文档型数据库的代表,MongoDB使用的是BSON(一种类似JSON的二进制形式)格式存储数据,它与传统的关系型...

    nosql之java

    这篇博文中,我们将深入讨论Java与NoSQL数据库的集成,特别是MongoDB作为示例,因为MongoDB是Java开发者常用的NoSQL数据库之一。 描述中提到的“NULL”可能意味着博主没有提供具体的细节,但我们可以通过通用的Java...

    MongoDB基础入门到高级进阶

    系统的学习MongoDB从入门到进阶,掌握现在火爆的NoSQL技术之一。 选择MongoDB的原因及其优势 MongoDB单机部署、副本集部署、分片部署以及相关操作 MongoDB的客户端连接和常用命令操作 SpringDataMongoDB对MongoDB的...

    MongoDB数据库常用命令.docx

    MongoDB 是 NoSQL 数据库系统中比较流行的数据库之一。它也是最接近关系型数据库的,一个数据库可以包含多个集合(Collection),类似于关系数据库中的表;而每个集合中可以存储一组由列标识的记录,列是可以自由...

    mongodb安装文件安装步骤常用命令和案例.rar

    总的来说,MongoDB作为一款强大的NoSQL数据库,其简洁的语法和灵活性使其在大数据时代备受青睐。通过以上内容,相信您已经对MongoDB的安装、基本操作和常见应用场景有了初步的认识。祝您学习愉快,如有疑问,欢迎...

Global site tag (gtag.js) - Google Analytics