mongodb 实例

package com.jaeson.mongodb;

import java.util.ArrayList;
import java.util.List;

import org.bson.Document;

import com.mongodb.Block;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
//import com.mongodb.MongoClientURI;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Sorts;
import com.mongodb.client.model.Projections;

public class MongodbTest {

	@SuppressWarnings("unused")
	public static void connectServer() {
		try {
			// 连接到 mongodb 服务
			MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
			//MongoClientURI connectionString = new MongoClientURI("mongodb://localhost:27017");
			//MongoClient mongoClient = new MongoClient(connectionString);
			//MongoClient mongoClient = new MongoClient(
			//	Arrays.asList(new ServerAddress("localhost", 27017),
		    	//		new ServerAddress("localhost", 27018)));
			
			//Get A List of Databases
			for (String name: mongoClient.listDatabaseNames()) {
			    System.out.println(name);
			}
			
			//drop database
			//mongoClient.getDatabase("databaseToBeDropped").drop();
			
			// 连接到数据库
			MongoDatabase mongoDatabase = mongoClient.getDatabase("mydb");  
			System.out.println("Connect to database successfully");
			
			mongoClient.close();
		} catch(Exception e) {
			System.err.println( e.getClass().getName() + ": " + e.getMessage() );
		}
	}
	@SuppressWarnings("unused")
	public static void connectServer(String username, String password) {
        try {  
            //连接到MongoDB服务,如果是远程连接可以替换“localhost”为服务器所在IP地址  
            //ServerAddress()两个参数分别为 服务器地址 和 端口  
            ServerAddress serverAddress = new ServerAddress("localhost", 27017);
            List<ServerAddress> addrs = new ArrayList<ServerAddress>();
            addrs.add(serverAddress);
              
            //MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码  
            MongoCredential credential = MongoCredential.createScramSha1Credential(username, "databaseName", password.toCharArray());
            List<MongoCredential> credentials = new ArrayList<MongoCredential>();
            credentials.add(credential);
              
            //通过连接认证获取MongoDB连接  
            MongoClient mongoClient = new MongoClient(addrs, credentials);
              
            //连接到数据库  
            MongoDatabase mongoDatabase = mongoClient.getDatabase("databaseName");
            System.out.println("Connect to database successfully");
            
            mongoClient.close();
        } catch (Exception e) {
            System.err.println( e.getClass().getName() + ": " + e.getMessage() );
        }
    }  

	public static void createCollection() {
		try{   
			// 连接到 mongodb 服务
			MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
 
			// 连接到数据库
			MongoDatabase mongoDatabase = mongoClient.getDatabase("mydb");  
			System.out.println("Connect to database successfully");
			mongoDatabase.createCollection("mycol");
			System.out.println("集合创建成功");
 
			//Get A List of Collections
			for (String name : mongoDatabase.listCollectionNames()) {
			    System.out.println(name);
			}
			
			MongoCollection<Document> collection = mongoDatabase.getCollection("mycol");
			System.out.println("集合 mycol 选择成功");
			
			// create an ascending index on the "i" field, 1 = ascending, -1 = descending
			collection.createIndex(new Document("i", 1));
			
			//Get a List of Indexes on a Collection
			for (final Document index : collection.listIndexes()) {
			    System.out.println(index.toJson());
			}
			
			//drop collection
			//collection.dropCollection();
			
			mongoClient.close();
		} catch(Exception e) {
			System.err.println( e.getClass().getName() + ": " + e.getMessage() );
		}
	}
	
	public static void insert() {
		try{   
			// 连接到 mongodb 服务
			MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
	          
			// 连接到数据库
			MongoDatabase mongoDatabase = mongoClient.getDatabase("mydb");  
			System.out.println("Connect to database successfully");

			MongoCollection<Document> collection = mongoDatabase.getCollection("mycol");
			System.out.println("集合 mycol 选择成功");
			//插入文档  
			/** 
			 * 1. 创建文档 org.bson.Document 参数为key-value的格式 
			 * 2. 创建文档集合List<Document> 
			 * 3. 将文档集合插入数据库集合中 mongoCollection.insertMany(List<Document>) 插入单个文档可以用 mongoCollection.insertOne(Document) 
			 */
			Document document = new Document("title", "MongoDB").
				append("description", "database").
				append("likes", 100).
				append("by", "Fly");
			List<Document> documents = new ArrayList<Document>();
			documents.add(document);
			collection.insertMany(documents);
			//collection.insertOne(document);
			System.out.println("文档插入成功");
			
			mongoClient.close();
		} catch(Exception e) {
			System.err.println( e.getClass().getName() + ": " + e.getMessage() );
		}
	}
	
	public static void find() {
		try{   
			// 连接到 mongodb 服务
			MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
	          
			// 连接到数据库
			MongoDatabase mongoDatabase = mongoClient.getDatabase("mydb");  
			System.out.println("Connect to database successfully");
	          
			MongoCollection<Document> collection = mongoDatabase.getCollection("mycol");
			System.out.println("集合 mycol 选择成功,count=" + collection.count());
	          
			//检索所有文档  
			/** 
			 * 1. 获取迭代器FindIterable<Document> 
			 * 2. 获取游标MongoCursor<Document> 
			 * 3. 通过游标遍历检索出的文档集合 
			 */  
			FindIterable<Document> findIterable = collection.find();
			MongoCursor<Document> mongoCursor = findIterable.iterator();
			while (mongoCursor.hasNext()) {
				System.out.println(mongoCursor.next());
			}
			
			List<Document> foundDocument = collection.find().into(new ArrayList<Document>());
			for (Document document : foundDocument) {
				System.out.println(document.toJson());
			}
			
			//find first
			Document myDoc = collection.find(Filters.eq("likes", 100)).first();
			System.out.println(myDoc.toJson());
			
			//find 50 < likes <= 200
			Block<Document> printBlock = new Block<Document>() {
			     @Override
			     public void apply(final Document document) {
			         System.out.println(document.toJson());
			     }
			};
			collection.find(Filters.and(Filters.gt("likes", 50), Filters.lte("likes", 200))).forEach(printBlock);
			
			//sort by likes desc
			myDoc = collection.find(Filters.exists("likes")).sort(Sorts.descending("likes")).first();
			System.out.println(myDoc.toJson());
			
			//exclude the _id field 
			myDoc = collection.find().projection(Projections.excludeId()).first();
			System.out.println(myDoc.toJson());

			mongoClient.close();
		} catch(Exception e) {
			System.err.println( e.getClass().getName() + ": " + e.getMessage() );
		}
	}
	
	public static void update() {
		try{   
			// 连接到 mongodb 服务
			MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
	          
			// 连接到数据库
			MongoDatabase mongoDatabase = mongoClient.getDatabase("mydb");  
			System.out.println("Connect to database successfully");
	          
			MongoCollection<Document> collection = mongoDatabase.getCollection("mycol");
			System.out.println("集合 mycol 选择成功");
	          
			//更新文档   将文档中likes=100的文档修改为likes=200
			//collection.updateOne(Filters.eq("likes", 100), new Document("$set",new Document("likes",200)));
			collection.updateMany(Filters.eq("likes", 100), new Document("$set",new Document("likes",200)));
			
			//更新文档   将文档中likes=100的文档的likes 增加50
			collection.updateMany(Filters.eq("likes", 100), new Document("$inc", new Document("likes", 50)));
			
			//检索查看结果  
			FindIterable<Document> findIterable = collection.find();
			MongoCursor<Document> mongoCursor = findIterable.iterator();
			while (mongoCursor.hasNext()) {
				System.out.println(mongoCursor.next());
			}
			
			mongoClient.close();
		} catch(Exception e) {
			System.err.println( e.getClass().getName() + ": " + e.getMessage() );
		}
	}
	
	public static void delete() {
		try{   
			// 连接到 mongodb 服务
			MongoClient mongoClient = new MongoClient( "localhost" , 27017 );

			// 连接到数据库
			MongoDatabase mongoDatabase = mongoClient.getDatabase("mydb");  
			System.out.println("Connect to database successfully");

			MongoCollection<Document> collection = mongoDatabase.getCollection("mycol");
			System.out.println("集合 mycol 选择成功");

			//删除符合条件的第一个文档  
			//collection.deleteOne(Filters.eq("likes", 200));
			//删除所有符合条件的文档  
			collection.deleteMany (Filters.eq("likes", 200));
			//检索查看结果  
			FindIterable<Document> findIterable = collection.find();
			MongoCursor<Document> mongoCursor = findIterable.iterator();
			while (mongoCursor.hasNext()) {
				System.out.println(mongoCursor.next());
			}
			
			mongoClient.close();
		} catch(Exception e) {
			System.err.println( e.getClass().getName() + ": " + e.getMessage() );
		}
	}
	
	public static void main(String[] args) {
	}
}

猜你喜欢

转载自jaesonchen.iteye.com/blog/2298867