/***MongoDBTest*MongoDB更新数据使用示例*/packagecom.labci.mongodb.test;importjava.net.UnknownHostException;importjava.util.Iterator;importcom.mongodb.BasicDBObject;impo
/**
* MongoDBTest
* MongoDB更新数据使用示例
*/
package com.labci.mongodb.test;
import java.net.UnknownHostException;
import java.util.Iterator;
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;
/**
*
* @author Bill Tu(tujiyue/iwtxokhtd)
* May 22, 2011[3:10:56 PM]
*
*/
public class MongoDBUpdateDataTest {
private static final String HOST = "192.168.1.86";
private static final int PORT = 27017;
private static final String USER = "iwtxokhtd";
private static final String PASSWORD = "123456";
private static final String DB_NAME = "test";
private static final String COLLECTION = "insert_test";
private static Mongo cOnn=null;
private static DB myDB=null;
private static DBCollection myCollection=null;
static{
try {
cOnn=new Mongo(HOST,PORT);//建立数据库连接
myDB=conn.getDB(DB_NAME);//使用test数据库
boolean loginSuccess=myDB.authenticate(USER,
PASSWORD.toCharArray());//用户验证
if(loginSuccess){
myCollection=myDB.getCollection(COLLECTION);
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (MongoException e) {
e.printStackTrace();
}
}
/**
* 更新“表”数据
* @param collection
*/
private static void updateData(DBCollection collection){
DBObject updateCOndition=new BasicDBObject();
//where name='fox'
updateCondition.put("name", "fox");
DBObject updatedValue=new BasicDBObject();
updatedValue.put("headers", 3);
updatedValue.put("legs", 4);
DBObject updateSetValue=new
BasicDBObject("$set",updatedValue);
/**
* update insert_test set headers=3 and legs=4 where
name='fox'
* updateCondition:更新条件
* updateSetValue:设置的新值
*/
collection.update(updateCondition, updateSetValue);
DBObject queryCOndition=new BasicDBObject();
//where name='sam',此条件在更新前不是成立的
queryCondition.put("name", "sam");
DBObject setValue=new BasicDBObject();
setValue.put("headers", 1);
setValue.put("legs", 1);
DBObject upsertValue=new BasicDBObject("$set",setValue);
/**
* 后面两个参数含义分别是:
* 若所更新的数据没有,则插入
* ,同时更新多个符合条件的文档(collection)
*/
collection.update(queryCondition, upsertValue, true, true);
//set headers=headers+2
DBObject incValue=new BasicDBObject("headers",2);
//set legs=4
DBObject legsValue=new BasicDBObject("legs",4);
DBObject allCOndition=new BasicDBObject();
allCondition.put("$inc", incValue);
allCondition.put("$set", legsValue);
collection.update(queryCondition, allCondition);
}
/**
* 返回查询结果集
* @param collection
* @return
*/
private static DBCursor queryData(DBCollection collection){
DBCursor queriedData=collection.find();
return queriedData;
}
/**
* 打印结果数据
* @param description 结果数据相关描述
* @param recordResult 结果集
*/
private static void printData(String description,DBCursor
recordResult){
System.out.println(description);
for(Iterator
iter=recordResult.iterator();iter.hasNext();){
System.out.println(iter.next());
}
}
/**
* @param args
*/
public static void main(String[] args) {
printData("查看一下更新前的数据:",queryData(myCollection));
//更新数据
updateData(myCollection);
printData("查看一下更新后的数据:",queryData(myCollection));
}
}