前言 :mongoDb 是一种比较常用的非关系数据库,文档数据库, 格式为json ,redis 有五种格式。
1. 项目中要使用,这里简单做个示例。首先是连接mongoDB,用的最多的robomongodb,下载,安装, 连接。
连接成功结构是这样的。
2.第二个maven引入jar包。我用的是springboot,里面直接有
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
3,mongoDB java api 类似redis的 jedis 别人写好的工具类, 拿来用就是。
package com.ycmedia.utils; import java.net.UnknownHostException; import java.util.HashMap; import java.util.List; import java.util.Map; import org.bson.types.ObjectId; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBObject; import com.mongodb.Mongo; import com.mongodb.MongoException; @SuppressWarnings("deprecation") public final class MongoDbUtil { private static final String HOST = "180.97.75.185:38017"; private static final String dbName = "yc"; private static Mongo mongo; private static DB db; static { try { mongo = new Mongo(HOST); db = mongo.getDB(dbName); // db.authenticate(username, passwd) } catch (UnknownHostException e) { e.printStackTrace(); } catch (MongoException e) { e.printStackTrace(); } } private MongoDbUtil() { } /** * 添加操作 * * @param map * @param collectionName */ public static void add(Map<String, Object> map, String collectionName) { DBObject dbObject = new BasicDBObject(map); getCollection(collectionName).insert(dbObject); } /** * 添加操作 * * @param list * @param collectionName */ public static void add(List<Map<String, Object>> list, String collectionName) { for (Map<String, Object> map : list) { add(map, collectionName); } } /** * 删除操作 * * @param map * @param collectionName */ public static void delete(Map<String, Object> map, String collectionName) { DBObject dbObject = new BasicDBObject(map); getCollection(collectionName).remove(dbObject); } /** * 删除操作,根据主键 * * @param id * @param collectionName */ public static void delete(String id, String collectionName) { Map<String, Object> map = new HashMap<String, Object>(); map.put("_id", new ObjectId(id)); delete(map, collectionName); } /** * 删除全部 * * @param collectionName */ public static void deleteAll(String collectionName) { getCollection(collectionName).drop(); } /** * 修改操作 * 会用一个新文档替换现有文档,文档key结构会发生改变 * 比如原文档{"_id":"123","name":"zhangsan","age":12}当根据_id修改age * value为{"age":12}新建的文档name值会没有,结构发生了改变 * * @param whereMap * @param valueMap * @param collectionName */ public static void update(Map<String, Object> whereMap, Map<String, Object> valueMap, String collectionName) { executeUpdate(collectionName, whereMap, valueMap, new UpdateCallback(){ public DBObject doCallback(DBObject valueDBObject) { return valueDBObject; } }); } /** * 修改操作,使用$set修改器 * 用来指定一个键值,如果键不存在,则自动创建,会更新原来文档, 不会生成新的, 结构不会发生改变 * * @param whereMap * @param valueMap * @param collectionName */ public static void updateSet(Map<String, Object> whereMap, Map<String, Object> valueMap, String collectionName) { executeUpdate(collectionName, whereMap, valueMap, new UpdateCallback(){ public DBObject doCallback(DBObject valueDBObject) { return new BasicDBObject("$set", valueDBObject); } }); } /** * 修改操作,使用$inc修改器 * 修改器键的值必须为数字 * 如果键存在增加或减少键的值, 如果不存在创建键 * * @param whereMap * @param valueMap * @param collectionName */ public static void updateInc(Map<String, Object> whereMap, Map<String, Integer> valueMap, String collectionName) { executeUpdate(collectionName, whereMap, valueMap, new UpdateCallback(){ public DBObject doCallback(DBObject valueDBObject) { return new BasicDBObject("$inc", valueDBObject); } }); } /** * 修改 * * @param collectionName * @param whereMap * @param valueMap * @param updateCallback */ private static void executeUpdate(String collectionName, Map whereMap, Map valueMap, UpdateCallback updateCallback) { DBObject whereDBObject = new BasicDBObject(whereMap); DBObject valueDBObject = new BasicDBObject(valueMap); valueDBObject = updateCallback.doCallback(valueDBObject); getCollection(collectionName).update(whereDBObject, valueDBObject); } interface UpdateCallback { DBObject doCallback(DBObject valueDBObject); } /** * 获取集合(表) * * @param collectionName * @return */ public static DBCollection getCollection(String collectionName) { return db.getCollection(collectionName); } public static void main(String[] args) { DBCollection collection = getCollection("url"); BasicDBObject queryObject = new BasicDBObject("urlMd5","bfa89e563d9509fbc5c6503dd50faf2e"); DBObject obj = collection.findOne(queryObject); System.out.println(obj); } }
4.查询
public static void main(String[] args) { DBCollection collection = getCollection("url"); BasicDBObject queryObject = new BasicDBObject("urlMd5","bfa89e563d9509fbc5c6503dd50faf2e"); DBObject obj = collection.findOne(queryObject); System.out.println(obj); }