java访问mongodb的基本操作

1.MongoDB背景知识。

Mongo DB 是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式备受当前IT从业人员的青睐。Mongo DB很好的实现了面向对象的思想(OO思想),在Mongo DB中 每一条记录都是一个Document对象。Mongo DB最大的优势在于所有的数据持久操作都无需开发人员手动编写SQL语句,直接调用方法就可以轻松的实现CRUD操作。(摘自百度百科)
详细介绍可以查看官网:http://docs.mongodb.org/manual/core/introduction/

2.mongo DB的常用基本操作
1)连接代码实例:
public void initMongo() {
    MongoClientURI uri = new MongoClientURI("mongodb://localhost:27017/");
    try {
        client = new MongoClient(uri);
    } catch (UnknownHostException e) {
        e.printStackTrace();
    }
    // 如果该数据库不存在,则创建一个名为“dbForErrorLog”的db
    db = client.getDB("dbForErrorLog”);  
    // 如果该collection不存在,则创建一个名为“wallpaper”的collection
    collection = db.getCollection("wallpaper”);  
}

连接之后可以通过collection来进行查询,插入,删除,更新。

2)查询接口:
// param1:要查询的key
// param2:要查询的key对应的值
// 接口功能:根据给定条件,查询符合条件的document记录
public void query(String key, Object value) {
    BasicDBObject queryPattern = new BasicDBObject();
    queryPattern.put(key, value);
    DBCursor cur = collection.find((DBObject)queryPattern);
    while (cur.hasNext()) {
        System.out.println(cur.next());
    }
}
// 无参数
// 接口功能:直接显示当前collection的所有条目
// 类似于 select * from table
public void queryAll() {
    DBCursor cur = collection.find();
    while (cur.hasNext()) {
  System.out.println(cur.next());
    }
}


3)插入接口:
// param:要插入collection的key/value对,存在Map中
// 接口功能:向当前collection插入一个条目(document)
public  void writeIntoMongo(Map content) throws UnknownHostException {
    DBObject ob = new BasicDBObject(content);
    collection.insert(ob);
}
// 如果想要一次性添加多个条目,可以传入一个(List<DBObject> list)参数,把要插入的record存储在DBObject中,通过List一次性插入。
// collection.insert(list);

4)删除接口:
// param:要删除的条目满足的查询条件
// 接口功能:从当前collection中删除满足条件的条目
// e.g.  DBObject rm = new BasicDBObject("errorId", new BasicDBObject("$gte",1001));
// 调用效果:把所有”errorId”的值大于等于1001的document删除
// 也可以像添加操作一样,传入一个Map,使用Map构建DBObject,从而用多个条件限定结果。
public void removeFromMongo(DBObject rmPattern){
    collection.remove(rmPattern);
}

5)更新接口:
// param1:要替换掉的条目所满足的查询条件
// param2:更新之后的条目内容
// param3:若为true,则没找到符合条件的record时,插入dest
// param4:若为false,则只更新符合条件的第一行;
// 若为true,则更新找到的所有record,此时dest应使用$set
// 接口功能:在collection中更新某些条目
// e.g.  param1与删除的param相似
// param2是要插入的DBObject,可以使用Map初始化,也可以直接用key/value对来初始化
// e.g.  DBObject dest = new BasicDBObject("errorId",1003);
public void updateMongo(DBObject src, DBObject dest,boolean upsert, boolean multi) {
     collection.update(src, dest, upsert, multi);
}

6)main函数调用示例:
 public static void main(String[] args) {
    UtilForMongoDB wim = new UtilForMongoDB();
    wim.initMongo();  

    // 把要插入的key/value对全部存在map中
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("errorType","wallpaper");
    map.put("errorId", 1001);  
    try {
        wim.writeIntoMongo(map);
    } catch (UnknownHostException e) {
        e.printStackTrace();
    }

    // 删除所有”errorId”==1001的record
    DBObject rm = new BasicDBObject("errorId", 1001);
    wim.removeFromMongo(rm);  

    // 把找到的第一个”errorId”>=1000的record,更新为{”errorId”:1003}
    // 相当于把src标识出的第一个record的内容</span>完全替换为dest表示的record。
    // 替换前后的record,保持primaryKey(_id)的值不变。
    DBObject src = new BasicDBObject("errorId", new BasicDBObject("$gte",1000));  
    DBObject dest = new BasicDBObject(“errorId”, “sorry I am updated”);
    wim.updateMongo(src, dest, true, false);
    // 执行结果如下:
    /* after insert:
       { "_id" : { "$oid" : "55d5704ee4b0d63f949c5327"} , "errorType" : "wallpaper" , "errorId" : 1001}
       after update:
       { "_id" : { "$oid" : "55d5704ee4b0d63f949c5327"} , "errorId" : "sorry I am updated"}
    */

    // multi参数为true,则更新所有匹配src的record</span>
    // dest 通过$set参数,只改变dest中的key/value,不改变其他内容
    DBObject src = new BasicDBObject("errorId", new BasicDBObject("$gte",1000));  
    DBObject dest = new BasicDBObject("$set",new BasicDBObject("errorId","sorry I am updated"));
    wim.updateMongo(src, dest, true, true);
    // 执行结果如下:
    /*after insert:
    { "_id" : { "$oid" : "55d5710ae4b0dea0b484bf59"} , "errorType" : "wallpaper" , "errorId" : 1001}
    after update:
    { "_id" : { "$oid" : "55d5710ae4b0dea0b484bf59"} , "errorId" : "sorry I am updated" , "errorType" : "wallpaper"}
    */
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值