一、mongoDB 基于简单的CRUD 操作GROUP 查询
1、需要的jar 架包,可在 http://pan.baidu.com/s/1sjVowyD 找到。
import java.net.UnknownHostException;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
import com.mongodb.util.JSON;
/**
* TODO:
* @author liyong
* @Date 2016年1月20日 下午3:57:54
*/
public class MongoDBTest {
public static void main(String[] args) throws UnknownHostException, MongoException {
//连接数据库
Mongo mg = new Mongo("127.0.0.1", 27017);
//查询所有的Database
for (String name : mg.getDatabaseNames()) {
System.out.println("dbName: " + name);
}
//连接到 mydb 中
DB db = mg.getDB("mydb");
//查询所有的聚集集合
for (String name : db.getCollectionNames()) {
System.out.println("collectionName: " + name);
}
//获取单一聚合 users 操作
DBCollection usersCollection = db.getCollection("users");
searchAll(usersCollection);
}
}
1、查询操作
<span style="font-size:14px;"> public static void searchAll(DBCollection usersCollection){
//查询操作
DBCursor cur = usersCollection.find();
while (cur.hasNext()) {
System.out.println(cur.next());
}
System.out.println("count :" + cur.count());
System.out.println("游 标 :" + cur.getCursorId());
System.out.println("序 列 化 :" + JSON.serialize(cur));
}</span>
2、添加操作
public static void add(DBCollection usersCollection){
//方法a:循环添加
for (int i = 0; i < 20; i++) {
int age = i % 5;
DBObject user = new BasicDBObject();
user.put("id", i);
user.put("name", "user"+i);
user.put("age",age);
usersCollection.save(user);
}
//方法b:添加 多条数据,传递Array对象
DBObject user = new BasicDBObject();
user.put("id", 20);
user.put("name", "user"+20);
user.put("age",20);
usersCollection.save(user);
usersCollection.insert(user, new BasicDBObject("name", "tom2")).getN(); //添加多条数据,传递Array对象
//方法c:添加List集合
List<DBObject> list = new ArrayList<DBObject>();
list.add(user);
DBObject user2 = new BasicDBObject("name", "lucy");
user.put("age", 22);
list.add(user2);
usersCollection.insert(list);
}
3、更改操作
public static void updateDB(DBCollection usersCollection){
DBObject upUser = new BasicDBObject();
upUser.put("name", "updateName");
upUser.put("age", 99);
upUser.put("sex", "updateSex");
usersCollection.update(new BasicDBObject("_id", new ObjectId("569f2e8496d7c496764dd0b4")), upUser);
}
4. 删除操作
public static void deleDB(DBCollection usersCollection){
//根据_id 删除
usersCollection.remove(new BasicDBObject("_id", new ObjectId("569f2e8496d7c496764dd0b5")));
//直接删除对象
DBObject upUser = new BasicDBObject();
upUser.put("name", "updateName");
upUser.put("age", 99);
upUser.put("sex", "updateSex");
usersCollection.remove(upUser);
}
5.根据条件分组统计GROUP
public static void searchGroup(DBCollection usersCollection){
//使用group 根据年龄,统计 不同年龄的人数
BasicDBObject key = new BasicDBObject("age",true); //分组KEY
BasicDBObject cond = new BasicDBObject("id",new BasicDBObject(QueryOperators.GT,0));
BasicDBObject initial = new BasicDBObject("count",0); //统计字段
String reduce = "function (doc,prev){ prev.count++ }"; //计算函数
BasicDBList group = (BasicDBList) usersCollection.group(key,cond,initial,reduce);
System.out.println("group:"+group);
}
所有源码参考:
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import org.bson.types.ObjectId;
import com.mongodb.BasicDBList;
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;
import com.mongodb.QueryOperators;
import com.mongodb.util.JSON;
/**
* TODO:
* @author liyong
* @Date 2016年1月20日 下午3:57:54
*/
public class MongoDBTest {
public static void main(String[] args) throws UnknownHostException, MongoException {
//连接数据库
Mongo mg = new Mongo("127.0.0.1", 27017);
//查询所有的Database
for (String name : mg.getDatabaseNames()) {
System.out.println("dbName: " + name);
}
//连接到 mydb 中
DB db = mg.getDB("mydb");
//查询所有的聚集集合
for (String name : db.getCollectionNames()) {
System.out.println("collectionName: " + name);
}
//获取单一聚合 users 操作
DBCollection usersCollection = db.getCollection("users");
//1.添加
/* add(usersCollection);
//2.更改
updateDB(usersCollection);
//3.删除
deleDB(usersCollection);
//4.分组查询
searchGroup(usersCollection);*/
//查询
searchAll(usersCollection);
mg.close();
}
public static void searchAll(DBCollection usersCollection){
//查询操作
DBCursor cur = usersCollection.find();
while (cur.hasNext()) {
System.out.println(cur.next());
}
System.out.println("count :" + cur.count());
System.out.println("游 标 :" + cur.getCursorId());
System.out.println("序 列 化 :" + JSON.serialize(cur));
}
public static void add(DBCollection usersCollection){
//1、添加操作
//方法a:循环添加
for (int i = 0; i < 20; i++) {
int age = i % 5;
DBObject user = new BasicDBObject();
user.put("id", i);
user.put("name", "user"+i);
user.put("age",age);
usersCollection.save(user);
}
//方法b:添加 多条数据,传递Array对象
DBObject user = new BasicDBObject();
user.put("id", 20);
user.put("name", "user"+20);
user.put("age",20);
usersCollection.save(user);
usersCollection.insert(user, new BasicDBObject("name", "tom2")).getN(); //添加多条数据,传递Array对象
//方法c:添加List集合
List<DBObject> list = new ArrayList<DBObject>();
list.add(user);
DBObject user2 = new BasicDBObject("name", "lucy");
user.put("age", 22);
list.add(user2);
usersCollection.insert(list);
}
public static void updateDB(DBCollection usersCollection){
DBObject upUser = new BasicDBObject();
upUser.put("name", "updateName");
upUser.put("age", 99);
upUser.put("sex", "updateSex");
usersCollection.update(new BasicDBObject("_id", new ObjectId("569f2e8496d7c496764dd0b4")), upUser);
}
public static void deleDB(DBCollection usersCollection){
//根据_id 删除
usersCollection.remove(new BasicDBObject("_id", new ObjectId("569f2e8496d7c496764dd0b5")));
//直接删除对象
DBObject upUser = new BasicDBObject();
upUser.put("name", "updateName");
upUser.put("age", 99);
upUser.put("sex", "updateSex");
usersCollection.remove(upUser);
}
public static void searchGroup(DBCollection usersCollection){
//使用group 根据年龄,统计 不同年龄的人数
BasicDBObject key = new BasicDBObject("age",true); //分组KEY
BasicDBObject cond = new BasicDBObject("id",new BasicDBObject(QueryOperators.GT,0));
BasicDBObject initial = new BasicDBObject("count",0); //统计字段
String reduce = "function (doc,prev){ prev.count++ }"; //计算函数
BasicDBList group = (BasicDBList) usersCollection.group(key,cond,initial,reduce);
System.out.println("group:"+group);
}
}