Home  >  Article  >  Database  >  MongoDBJava连接

MongoDBJava连接

WBOY
WBOYOriginal
2016-06-07 15:28:191088browse

Java 连接MongoDB package mymaven;import java.net.UnknownHostException;import java.util.Set;import com.mongodb.BasicDBObject;import com.mongodb.DB;import com.mongodb.DBCollection;import com.mongodb.DBCursor;import com.mongodb.DBObject;impor

Java 连接MongoDB

package mymaven;

import java.net.UnknownHostException;
import java.util.Set;

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.MongoException;

public class Test {
	/**
	 * @author ithomer.net
	 * @datetime 2013-11-11
	 */
	public static void main(String[] args) throws UnknownHostException, MongoException {
		Mongo mongo = new Mongo("172.27.9.104", 27017);		// 连接数据库
		DB db = mongo.getDB("mytestdb");					// 数据库
		Set<String> cols = db.getCollectionNames();			// 获取数据库中所有的集合(类似于获取关系数据库中的表)
		
		// 打印出数据库中的集合,这里应当为null
		for (String s : cols) {
			System.out.println(s);
		}
		
		DBCollection collection = db.getCollection("mytestcoll");		// 创建一个集合
		collection.drop();												// 删除集合,插入数据时自动重建
		BasicDBObject obj = new BasicDBObject();						// 初始化一个基本DB对象,插入数据库的就是DB对象
		
		obj.put("from", "blog.ithomer.net");		// 放入几个键值对
		obj.put("to", "forum.ithomer.net");
		obj.put("subject", "ithomer.net");
		collection.insert(obj);						// 插入对象
		
		DBObject dbobj = collection.findOne();		// 查看一条记录,findOne()=find().limit(1);
		System.out.println(dbobj);					// 打印出刚才插入的数据
		
		// 插入10条{ranking:i}的数据
		for (int i = 0; i < 10; i++) {
			collection.insert(new BasicDBObject().append("ranking", i));
		}
		System.out.println("count: " + collection.getCount());		// 打印集合中的数据总数

		
		DBCursor cursor = collection.find();		// 然后我们使用这个游标来遍历集合
		while (cursor.hasNext()) {
			System.out.println(cursor.next());
		}
		// 简单的条件查询,查询ranking为1的记录
		BasicDBObject query = new BasicDBObject();
		query.put("ranking", 1);
		cursor = collection.find(query);
		System.out.println("collection find({\"ranking\":1}):");
		while (cursor.hasNext()) {
			System.out.println(cursor.next());
		}
		
		// 复杂的条件查询,查询ranking大于等于5小于9的记录
		query = new BasicDBObject();
		query.put("ranking", new BasicDBObject("$gte", 5).append("$lt", 9));
		cursor = collection.find(query);
		System.out.println("collection find({\"ranking\":[5-9)}):");
		while (cursor.hasNext()) {
			System.out.println(cursor.next());
		}
		
//		mongo.dropDatabase("mytestdb");			// 最后删除我们的测试数据库
	}
}

运行结果:

mytestcoll
system.indexes
{ "_id" : { "$oid" : "52c62ed8e4b0f4de3dd10107"} , "from" : "blog.ithomer.net" , "to" : "forum.ithomer.net" , "subject" : "ithomer.net"}
count: 11
{ "_id" : { "$oid" : "52c62ed8e4b0f4de3dd10107"} , "from" : "blog.ithomer.net" , "to" : "forum.ithomer.net" , "subject" : "ithomer.net"}
{ "_id" : { "$oid" : "52c62ed8e4b0f4de3dd10108"} , "ranking" : 0}
{ "_id" : { "$oid" : "52c62ed8e4b0f4de3dd10109"} , "ranking" : 1}
{ "_id" : { "$oid" : "52c62ed8e4b0f4de3dd1010a"} , "ranking" : 2}
{ "_id" : { "$oid" : "52c62ed8e4b0f4de3dd1010b"} , "ranking" : 3}
{ "_id" : { "$oid" : "52c62ed8e4b0f4de3dd1010c"} , "ranking" : 4}
{ "_id" : { "$oid" : "52c62ed8e4b0f4de3dd1010d"} , "ranking" : 5}
{ "_id" : { "$oid" : "52c62ed8e4b0f4de3dd1010e"} , "ranking" : 6}
{ "_id" : { "$oid" : "52c62ed8e4b0f4de3dd1010f"} , "ranking" : 7}
{ "_id" : { "$oid" : "52c62ed8e4b0f4de3dd10110"} , "ranking" : 8}
{ "_id" : { "$oid" : "52c62ed8e4b0f4de3dd10111"} , "ranking" : 9}
collection find({"ranking":1}):
{ "_id" : { "$oid" : "52c62ed8e4b0f4de3dd10109"} , "ranking" : 1}
collection find({"ranking":[5-9)}):
{ "_id" : { "$oid" : "52c62ed8e4b0f4de3dd1010d"} , "ranking" : 5}
{ "_id" : { "$oid" : "52c62ed8e4b0f4de3dd1010e"} , "ranking" : 6}
{ "_id" : { "$oid" : "52c62ed8e4b0f4de3dd1010f"} , "ranking" : 7}
{ "_id" : { "$oid" : "52c62ed8e4b0f4de3dd10110"} , "ranking" : 8}

源码下载(maven)

mongodb数组示例:

	@SuppressWarnings("unchecked")
	public static void loadMediaTags(List<MediaEntity> mediaEntityList) {
		mediaEntityList.clear();
		
		try {
			Mongo mongo = new Mongo(CosineCluster.gMongo_HOST, CosineCluster.gMongo_PORT);
			DB db = mongo.getDB(CosineCluster.gMongo_DB);
			DBCollection collection = db.getCollection(CosineCluster.gMongo_Coll_Media);
			
			DBCursor cursor = collection.find();
			int index = 0;
			long startTime = System.currentTimeMillis();
			while(cursor.hasNext()){
				BasicDBObject obj = (BasicDBObject) cursor.next();
				
				long id = obj.getLong("_id");
				ArrayList<String> tagList = (ArrayList<String>) obj.get("tag");					// tag
				ArrayList<String> keywordList = (ArrayList<String>)obj.get("keyword");			// keyword
				ArrayList<Integer> copyrightList = (ArrayList<Integer>)obj.get("copyright");	// copyright
				
		
				MediaEntity mediaEntity = new MediaEntity();
				
				mediaEntity.setId(id);
				
				// tag
				for(int j=0; j<tagList.size(); j++) {
					mediaEntity.addTag(tagList.get(j));
					int tagId = getTagInt(tagList.get(j));
					mediaEntity.addTag(tagId);
				}
				
				// actors
				ArrayList<DBObject> actorsObjList = (ArrayList<DBObject>)obj.get("actors");		// actors
				for(int j=0; j<actorsObjList.size(); j++) {
					 mediaEntity.addActor((String) actorsObjList.get(j).get("name"));	
					 int actorId = getActorInt((String)actorsObjList.get(j).get("name"));
					 mediaEntity.addActor(actorId);
				}

				// director
				ArrayList<DBObject> directorObjList = (ArrayList<DBObject>)obj.get("director");	// director
				for(int j=0; j<directorObjList.size(); j++) {
					 mediaEntity.addDirector((String) directorObjList.get(j).get("name"));	
					 int directorId = getDirectorInt((String) directorObjList.get(j).get("name"));
					 mediaEntity.addDirector(directorId);
				}
				
				// keyword
				for(int j=0; j<keywordList.size(); j++) {
					mediaEntity.addKeyword(keywordList.get(j));
					int keywordId = getKeywordInt(keywordList.get(j));
					mediaEntity.addKeyword(keywordId);
				}
				
				// copyright
				for(int j=0; j<copyrightList.size(); j++) {
					mediaEntity.addCopyright(copyrightList.get(j));
				}
				
				mediaEntityList.add(mediaEntity);
				
				index++;
				if(index > 100) {
					break;
				}
				System.out.println(index + " --- mediaEntity : " + mediaEntity.toString());
			}
			long costTime = System.currentTimeMillis() - startTime;
			System.out.println("load data costTime = " + index + "; costTime = " + costTime/1000f);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static int getTagInt(String tag) {
		int tagIntId = -1;
		
		try {
			MongoClient mongo = new MongoClient(CosineCluster.gMongo_HOST, CosineCluster.gMongo_PORT);
			DB db = mongo.getDB(CosineCluster.gMongo_DB);
			DBCollection tagmapCollection = db.getCollection("recommend_tag_map");

			DBCursor cursor = tagmapCollection.find(new BasicDBObject("name", tag));	
			if(cursor == null || cursor.toArray().size() <= 0) {		// 处理小于2或n的映射关键字,下同
				return tagIntId;
			}
			DBObject obj = cursor.toArray().get(0);
			
			
			String name = tag;
			tagIntId = (Integer) obj.get("id");
			int num = (Integer) obj.get("num");
			
			mongo.close();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}
		
		return tagIntId;
	}

	public static int getActorInt(String actor) {
		int actorIntId = -1;
		try {
			MongoClient mongo = new MongoClient(CosineCluster.gMongo_HOST, CosineCluster.gMongo_PORT);
			DB db = mongo.getDB(CosineCluster.gMongo_DB);
			DBCollection tagmapCollection = db.getCollection("recommend_actor_map");
			
			DBCursor cursor = tagmapCollection.find(new BasicDBObject("name", actor));
			if(cursor == null || cursor.toArray().size() <= 0) {
				return actorIntId;
			}
			DBObject obj = cursor.toArray().get(0);
			
			String name = actor;
			actorIntId = (Integer) obj.get("id");
			int num = (Integer) obj.get("num");
			
			mongo.close();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}
		
		return actorIntId;
	}
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn