java操作mongodb获取记录数_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-2.6的Java驱动测试

* @see ----------------------------------------------------------------------------------------

* @see 这里要用到mongoDB的Java驱动包,下载地址http://docs.mongodb.org/ecosystem/drivers/java/

* @see ----------------------------------------------------------------------------------------

* Created by 玄玉 on 2014/05/15 22:17.

*/

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 actorList = new ArrayList();

actorList.add("Jack Bauer");

actorList.add("Counter Terrorist Unit");

doc.put("actor", actorList);

db.getCollection("movie").insert(doc);

}

/**

* 批量插入文档

*/

@Test

public void insertBatchDocument(){

List docList = new ArrayList();

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", "[email protected]"));

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();

}

}

}

你可能感兴趣的:(java操作mongodb获取记录数_Java操作MongoDB的常见API)