Java操作mongoDB2.6的常见API用法

完整版见https://jadyer.github.io/2014/05/16/java-api-mongodb/




对于mongoDB而言,学习方式和学习关系型数据库差不太多

开始都是学习如何insert、find、update、remove,然后就是分页、排序、索引,再接着就是主从复制、副本集、分片等等

最后就是通过它提供的各个驱动(比如Java、PHP、node.js等等)来练习所谓的高级用法


另外:相对于Oracle有PLSQL Developer,MySQL有HeidiSQL

            mongoDB也不例外,它的图形化工具中有一款叫做mongoVUE的,我用的是1.5.3破解版(不是每15天就得改一次注册表的那种)


下面演示的就是以Java为例,常见的操作mongoDB API用法

package com.jadyer.test;

import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;

import org.bson.types.ObjectId;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import com.mongodb.WriteResult;
import com.mongodb.util.JSON;

/**
 * mongoDB的Java驱动测试
 * @see ----------------------------------------------------------------------------------------
 * @see 配置
 * @see 1)下载https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.6.1.zip
 * @see 2)解压到本地硬盘D:\Develop\mongoDB\中,并配置环境变量path=D:\Develop\mongoDB\bin
 * @see   然后在CMD下执行此命令验证安装成功与否>mongod --version
 * @see 3)建立D:\Develop\mongoDBData\文件夹,用于存放mongoDB数据文件
 * @see 4)自定义bat文件,分别用于启动mongoDB数据库和连接数据库的客户端
 * @see   启动客户端的mongo_client.bat内容为-->mongo 127.0.0.1:27017/admin
 * @see   启动数据库的mongo_db.bat内容为------>mongod --dbpath D:\Develop\mongoDBData --rest
 * @see   注:加入[--rest]参数是为了能够访问mongoDB的Web控制台http://127.0.0.1:28017/
 * @see ----------------------------------------------------------------------------------------
 * @see Java驱动
 * @see 这里要用到mongoDB的Java驱动包,下载地址http://docs.mongodb.org/ecosystem/drivers/java/
 * @see ----------------------------------------------------------------------------------------
 * @create May 15, 2014 10:17:30 PM
 * @author 玄玉<http://blog.csdn.net/jadyer>
 */
public class MongoDBTest {
	private static MongoClient mongoClient;
	private static DB db;
	
	/**
	 * 建立数据库连接
	 */
	@BeforeClass
	public static void globalInit(){
		try {
			//mongoClient = new MongoClient(Arrays.asList(new ServerAddress("127.0.0.1", 27017), new ServerAddress("127.0.0.1", 27018), new ServerAddress("127.0.0.1", 27019)));
			mongoClient = new MongoClient("127.0.0.1", 27017);
		} catch (UnknownHostException e) {
			System.err.println("mongoDB主机地址有误");
		}
		db = mongoClient.getDB("mydemo");
	}
	
	
	/**
	 * 销毁数据库连接
	 */
	@AfterClass
	public static void globalDestroy(){
		mongoClient.close();
	}
	
	
	/**
	 * 获取数据库信息
	 */
	@Test
	public void getMetaData(){
		//查询数据库中所有的集合名称
		for(String collectionName : db.getCollectionNames()){
			System.out.println("mydemo数据库所拥有的集合为:[" + collectionName + "]");
		}
		//查询某一集合中的数据
		DBCollection collection = db.getCollection("person");
		DBCursor cursor = collection.find();
		try{
			while(cursor.hasNext()){
				System.out.println("person集合所拥有的name为--[" + cursor.next().get("name") + "]");
			}
		}finally{
			cursor.close();
		}
		System.out.println("person集合中的记录数为----------->" + cursor.count());
		System.out.println("person集合数据格式化后的JSON串为-->" + JSON.serialize(cursor));
	}
	
	
	/**
	 * 创建一个空的"moive"集合
	 */
	@Test
	public void createCollection(){
		db.createCollection("movie", new BasicDBObject());
	}
	
	
	/**
	 * 为"moive"集合添加文档
	 */
	@Test
	public void insertDocument(){
		DBObject doc = new BasicDBObject();
		doc.put("name", "24");
		doc.put("season", "ninth");
		doc.put("score", 88);
		List<String> actorList = new ArrayList<String>();
		actorList.add("Jack Bauer");
		actorList.add("Counter Terrorist Unit");
		doc.put("actor", actorList);
		db.getCollection("movie").insert(doc);
	}
	
	
	/**
	 * 批量插入文档
	 */
	@Test
	public void insertBatchDocument(){
		List<DBObject> docList = new ArrayList<DBObject>();
		DBObject doc11 = new BasicDBObject("name", "Prison Break").append("season", "fourth").append("score", 99);
		DBObject doc22 = new BasicDBObject("name", "Game of Thrones").append("season", "third").append("score", 92);
		docList.add(doc11);
		docList.add(doc22);
		db.getCollection("movie").insert(docList);
	}
	
	
	/**
	 * 根据_id删除数据
	 */
	@Test
	public void deleteById(){
		WriteResult result = db.getCollection("movie").remove(new BasicDBObject("_id", new ObjectId("5374c6dc5030e0ea4dac8907")));
		System.out.println("本次操作影响的记录条数为:" + result.getN());
	}
	
	
	/**
	 * 根据条件删除数据
	 */
	@Test
	public void deleteByData(){
		DBObject doc = new BasicDBObject();
		doc.put("name", "Prison Break");
		WriteResult result = db.getCollection("movie").remove(doc);
		System.out.println("本次操作影响的记录条数为:" + result.getN());
	}
	
	
	/**
	 * 更新数据
	 * @see 增加email属性
	 */
	@Test
	public void update(){
		DBObject doc = new BasicDBObject();
		doc.put("$set", new BasicDBObject("email", "Jadyer@yeah.net"));
		WriteResult result = db.getCollection("movie").update(new BasicDBObject(), doc, false, true);
		System.out.println("本次操作影响的记录条数为:" + result.getN());
	}
	
	
	/**
	 * 查询"moive"集合中的key
	 */
	@Test
	public void getKey(){
		DBObject keys = new BasicDBObject();
		keys.put("_id", false);
		keys.put("name", true);
		//keys.put("score", true);
		//第一个参数表示查询条件,第二个参数表示返回的具体key
		DBCursor cursor = db.getCollection("movie").find(null, keys);
		try{
			while(cursor.hasNext()){
				DBObject object = cursor.next();
				System.out.println("查询到的name=" + object.get("name") + ", score=" + object.get("score"));
			}
		}finally{
			cursor.close();
		}
	}
	
	
	/**
	 * 查询"moive"集合中分数不超过95的key
	 */
	@Test
	public void getKeyUseScore(){
		DBObject ref = new BasicDBObject();
		ref.put("score", new BasicDBObject("$lte", 95));
		DBCursor cursor = db.getCollection("movie").find(ref, null);
		try{
			while(cursor.hasNext()){
				DBObject object = cursor.next();
				System.out.println("查询到的name=" + object.get("name") + ", score=" + object.get("score"));
			}
		}finally{
			cursor.close();
		}
	}
	
	
	/**
	 * 分页查询
	 */
	@Test
	public void limitSkip(){
		DBCursor cursor = db.getCollection("movie").find(null, null);
		cursor.limit(0).skip(1);
		try{
			while(cursor.hasNext()){
				DBObject object = cursor.next();
				System.out.println("查询到的name=" + object.get("name"));
			}
		}finally{
			cursor.close();
		}
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MongoDB提供了Java驱动程序,以便使用Java语言访问数据库。以下是MongoDB Java操作API的一些示例代码: 1. 连接到数据库: ``` MongoClient mongoClient = new MongoClient("localhost", 27017); MongoDatabase database = mongoClient.getDatabase("mydatabase"); ``` 2. 插入数据: ``` MongoCollection<Document> collection = database.getCollection("mycollection"); Document document = new Document("name", "John Doe") .append("age", 30) .append("address", new Document("street", "123 Main St") .append("city", "Anytown") .append("state", "CA") .append("zip", 12345)); collection.insertOne(document); ``` 3. 查询数据: ``` MongoCollection<Document> collection = database.getCollection("mycollection"); Document query = new Document("name", "John Doe"); FindIterable<Document> results = collection.find(query); for (Document result : results) { System.out.println(result.toJson()); } ``` 4. 更新数据: ``` MongoCollection<Document> collection = database.getCollection("mycollection"); Document query = new Document("name", "John Doe"); Document update = new Document("$set", new Document("age", 31)); UpdateResult result = collection.updateOne(query, update); System.out.println("Modified count: " + result.getModifiedCount()); ``` 5. 删除数据: ``` MongoCollection<Document> collection = database.getCollection("mycollection"); Document query = new Document("name", "John Doe"); DeleteResult result = collection.deleteOne(query); System.out.println("Deleted count: " + result.getDeletedCount()); ``` 这些示例代码可以帮助你开始使用MongoDB Java操作API。但是,还有很多其他功能可以探索,具体取决于你的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值