20.使用javaAPI操作MongoDB
Posted 大数据小小罗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20.使用javaAPI操作MongoDB相关的知识,希望对你有一定的参考价值。
获取集合实例的工具类:
package com.itcast.util;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.Mongo;
public class DBUtil
public static Mongo mg = null;
public static DB db = null;
public static DBCollection collection;
/**
* 根据 数据库名称dbName 和集合名称collName 获取集合实例
* @param dbName 数据库名称
* @param collName 集合名称
* @return
*/
public static DBCollection getDBCollection(String dbName, String collName)
if(mg==null)
try
mg = new Mongo(); //相当于 new Mongo("127.0.0.1:27017");
catch (Exception e)
e.printStackTrace();
if(db ==null)
db = mg.getDB(dbName);
return db.getCollection(collName);
增删改查示例
package com.itcast.helloworld;
import java.util.ArrayList;
import java.util.List;
import com.itcast.util.DBUtil;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.WriteResult;
public class MongoTest
/**
* MongoDB增删改查示例
*/
public static void main(String[] args)
/**
* 1.查询出集合users中所有的数据
*/
query();
/**
* 2.删除haha集合中name="wangergou"的数据
*/
DBObject obj = new BasicDBObject("name", "wangergou");
delete(obj);
/**
* 3.插入一条数据
*/
// 3.1首先创建要插入的对象 name:"liheizi",age:2,books:[shuihuzhuan,hongloumeng,xiyouji,sanguo]
BasicDBObject objs = new BasicDBObject();
objs.put("name","liheizi");
objs.put("age",2);
List<String> booklist = new ArrayList<String>();
booklist.add("shuihuzhuan");
booklist.add("hongloumeng");
booklist.add("xiyouji");
booklist.add("sanguo");
objs.put("books", booklist);
// 3.2执行插入
insert(objs);
// 3.3查看插入后的结果
query2();
/**
* 4.批量插入数据
*/
List<DBObject> objLists = new ArrayList<DBObject>();
BasicDBObject jim = new BasicDBObject("name", "jim");
BasicDBObject sally = new BasicDBObject("name", "tommy");
objLists.add(jim);
objLists.add(sally);
insertBatch(objLists);
query2();
/**
* 5.更新操作,为集合增加email属性
*/
DBObject update = new BasicDBObject();
//"$set"表示修改器 和shell中的使用时类似的
update.put("$set", new BasicDBObject("email","sdfdf@qq.com"));
update(new BasicDBObject(),update,false,true);
query2();
/**
* 6.查询器的使用
* 查询出users集合中的指定字段 (name和age)
*/
DBObject queryObj = new BasicDBObject();
queryObj.put("_id", false);
queryObj.put("name", true);
queryObj.put("age", true);
DBCursor cur = find(null,queryObj);
while(cur.hasNext())
DBObject next = cur.next();
System.out.println("name:"+next.get("name") + "-- age:"+next.get("age"));
/**
* 查询
*/
public static void query()
DBCollection coll = DBUtil.getDBCollection("foobar", "users");
//查询集合中所有数据
DBCursor cur = coll.find();
while(cur.hasNext())
DBObject obj = cur.next();
System.out.println("name:"+obj.get("name")+" age:"+obj.get("age")+" country:"+obj.get("country"));
System.out.println("查询结果总计:"+cur.count()+"条");
public static void query2()
DBCollection coll = DBUtil.getDBCollection("foobar", "haha");
//查询集合中所有数据
DBCursor cur = coll.find();
while(cur.hasNext())
DBObject obj = cur.next();
System.out.println("name:"+obj.get("name")+" email:"+obj.get("email"));
System.out.println("查询结果总计:"+cur.count()+"条");
/**
* 删除
* @param obj
*/
public static void delete(DBObject obj)
DBCollection coll=DBUtil.getDBCollection("foobar", "haha");
WriteResult res = coll.remove(obj);
System.out.println("共影响到"+res.getN()+"条数据");
/**
* 插入数据
*/
public static void insert(DBObject obj)
DBCollection coll=DBUtil.getDBCollection("foobar", "haha");
//执行插入操作
System.out.println("共有"+coll.insert(obj).getN()+"条数据成功插入!");
/**
* 批量插入
* @param objLists
*/
public static void insertBatch(List<DBObject> objLists)
DBCollection coll = DBUtil.getDBCollection("foobar", "haha");
coll.insert(objLists).getN();
/**
* 更新操作
* @param queryObj 查询器
* @param updateObj 修改后的值
* @param upsert true:存在则更新 不存在则插入
* @param multi 是否进行全局多匹配操作?
*/
private static void update(BasicDBObject queryObj, DBObject updateObj,
boolean upsert, boolean multi)
DBCollection coll = DBUtil.getDBCollection("foobar", "haha");
int count = coll.update(queryObj, updateObj, upsert, multi).getN();
System.out.println(count+"条记录被更新");
/**
* 查询数据(不带分页)
* @param ref 查询器 如果为null 代表是匹配所有
* @param keys 要查询的字段集合
* @param collName 被操作的集合对象
* @return
*/
public static DBCursor find(DBObject ref, DBObject keys)
//1.得到集合
DBCollection coll = DBUtil.getDBCollection("foobar", "users");
return coll.find(ref, keys);
以上是关于20.使用javaAPI操作MongoDB的主要内容,如果未能解决你的问题,请参考以下文章