package com.mongodb;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.bson.types.ObjectId;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.gridfs.GridFS;
import com.mongodb.gridfs.GridFSDBFile;
import com.mongodb.gridfs.GridFSFile;
/**
* MongoDB Manager
*
* @author dhdu@qq.com
*
*/
public class DbManager {
//instance
private final static DbManager instance = new DbManager();
//
private DbManager() {
}
//
private static Mongo m = null;
//
private static DB db = null;
//
private static DBCollection coll = null;
//
private static GridFS gridFS = null;
//static block for init
static {
try {
m = new Mongo(DbProperties.getInstance().getValue("db.host"),
Integer.valueOf(DbProperties.getInstance().getValue(
"db.port")));
db = m.getDB(DbProperties.getInstance().getValue("db.dbname"));
coll = db.getCollection(DbProperties.getInstance().getValue(
"db.collname"));
gridFS = new GridFS(db);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
* @return
* @throws Exception
*/
public static DbManager getInstance() throws Exception {
return instance;
}
/**
*
* @return
*/
public DBCollection getCollection() {
return coll;
}
/**
*
* @return
*/
public GridFS getGridFS() {
return gridFS;
}
/**
* ------------------------------------------------------------------------
*
**/
/***
* ---------------------object
***/
/**
*
* @param map
* @return
* @throws Exception
*/
public Object insert(Map map) throws Exception {
int n = coll.insert(map2Obj(map)).getN();
return n;
}
/**
*
* @param list
*/
public void insertBatch(List<Map<String, Object>> list) {
if (list == null || list.isEmpty()) {
return;
}
List<DBObject> listDB = new ArrayList<DBObject>();
for (int i = 0; i < list.size(); i++) {
DBObject dbObject = map2Obj(list.get(i));
listDB.add(dbObject);
}
coll.insert(listDB);
}
/**
*
* @param map
*/
public void delete(Map<String, Object> map) {
DBObject obj = map2Obj(map);
coll.remove(obj);
}
/**
*
*
*/
public void deleteAll() {
List <DBObject>rs=getAll();
if(rs!=null&&!rs.isEmpty())
{
for(int i=0;i<rs.size();i++){
coll.remove(rs.get(i));
}
}
}
/**
*
* @param list
*/
public void deleteBatch(List<Map<String, Object>> list) {
if (list == null || list.isEmpty()) {
return;
}
for (int i = 0; i < list.size(); i++) {
coll.remove(map2Obj(list.get(i)));
}
}
/**
*
* @param map
* @return
*/
public long getCount(Map<String, Object> map) {
return coll.getCount(map2Obj(map));
}
/**
*
* @param setFields
* @param whereFields
*/
public void update(Map<String, Object> setFields,
Map<String, Object> whereFields) {
DBObject obj1 = map2Obj(setFields);
DBObject obj2 = map2Obj(whereFields);
getCollection().updateMulti(obj1, obj2);
}
/**
*
* @param id
* @return
*/
public Map<String, Object> getById(String id) {
DBObject obj = new BasicDBObject();
obj.put("id", new Long(id));
DBObject result = getCollection().findOne(obj);
return result.toMap();
}
/**
*
* @return
*/
public long getCount() {
return coll.find().count();
}
/**
*
* @return
*/
public List<DBObject> getAll() {
return coll.find().toArray();
}
/**
*
* @param map
* @return
* @throws Exception
*/
public DBObject findOne(Map map) throws Exception {
return coll.findOne(map2Obj(map));
}
/**
*
* @param <DBObject>
* @param map
* @return
* @throws Exception
*/
public <DBObject> List find(Map map) throws Exception {
DBCursor c = coll.find(map2Obj(map));
if (c != null)
return c.toArray();
else
return null;
}
/***
* ---------------------file
***/
/**
*
* @param in
* @param filename
*/
public void saveFile(InputStream in, String filename) {
GridFSFile mongofile = gridFS.createFile(in, filename);
// 文件名
mongofile.put("filename", filename);
// 保存时间
mongofile.put("uploadDate", DateUtils.getCurrentCnDateWithDate());
// 文件类型
mongofile.put("contentType", filename.split("\\.")[filename
.split("\\.").length - 1]);
mongofile.save();
}
/**
*
* @param file
* @param filename
*/
public void saveFile(File file, String filename) {
try {
GridFSFile mongofile = gridFS.createFile(file);
// 文件名
mongofile.put("filename", filename);
// 保存时间
mongofile.put("uploadDate", DateUtils.getCurrentCnDateWithDate());
// 文件类型
mongofile.put("contentType", filename.split("\\.")[filename
.split("\\.").length - 1]);
mongofile.save();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
*
* @param bytes
* @param filename
*/
public void saveFile(byte[] bytes, String filename) {
GridFSFile mongofile = gridFS.createFile(bytes);
// 文件名
mongofile.put("filename", filename);
// 保存时间
mongofile.put("uploadDate", DateUtils.getCurrentCnDateWithDate());
// 文件类型
mongofile.put("contentType", filename.split("\\.")[filename
.split("\\.").length - 1]);
mongofile.save();
}
/**
*
* @param in
* @param fn
* @param map
*/
public void saveFile(InputStream in, String fn, Map map) {
GridFSFile mongofile = gridFS.createFile(in, fn);
if (map != null) {
Object os[] = map.keySet().toArray();
for (int i = 0; i < os.length; i++) {
mongofile.put(String.valueOf(os[i]), map.get(os[i]));
}
}
// 文件名
mongofile.put("filename", fn);
// 保存时间
mongofile.put("uploadDate", DateUtils.getCurrentCnDateWithDate());
// 文件类型
mongofile.put("contentType",
fn.split("\\.")[fn.split("\\.").length - 1]);
mongofile.save();
}
/**
*
* @param file
* @param fn
* @param map
*/
public void saveFile(File file, String fn, Map map) {
GridFSFile mongofile;
try {
mongofile = gridFS.createFile(file);
// DBObject o=map2Obj(map);
if (map != null) {
Object os[] = map.keySet().toArray();
for (int i = 0; i < os.length; i++) {
mongofile.put(String.valueOf(os[i]), map.get(os[i]));
}
}
// 文件名
mongofile.put("filename", fn);
// 保存时间
mongofile.put("uploadDate", DateUtils.getCurrentCnDateWithDate());
// 文件类型
mongofile.put("contentType",
fn.split("\\.")[fn.split("\\.").length - 1]);
mongofile.save();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
*
* @param fileName
* @return
*/
public List<GridFSDBFile> findFiles(Map map) {
List<GridFSDBFile> list = gridFS.find(map2Obj(map));
return list;
}
/**
*
* @param fileName
* @return
*/
public List<GridFSDBFile> findFilesByName(String fileName) {
List<GridFSDBFile> list = gridFS.find(fileName);
return list;
}
/**
*
* @param filename
* @return
*/
public GridFSDBFile findFileByName(String filename) {
return gridFS.findOne(filename);
}
/**
*
* @param filename
* @return
*/
public InputStream getFileInputStream(String filename) {
return gridFS.findOne(filename).getInputStream();
}
/**
*
* @param map
* @return
*/
public GridFSDBFile findFirstFile(Map<String, Object> map) {
return gridFS.findOne(map2Obj(map));
}
/**
*
* @param filename
*/
public void removeFile(String filename) {
gridFS.remove(filename);
}
/**
*
* @param query
*/
public void removeFile(BasicDBObject query) {
gridFS.remove(query);
}
/**
*
* @param id
*/
public void removeFile(ObjectId id) {
gridFS.remove(id);
}
/**
*
*/
public void removeAllFile() {
gridFS.remove(new BasicDBObject());
System.out.println("remove all files ok!");
}
/**
*
* @return
*/
public long getFileCount() {
return gridFS.getFileList().count();
}
/**
*
* @return
*/
public List<GridFSDBFile> getAllFiles() {
return gridFS.find(new BasicDBObject());
}
/**
* ------------------------------------------------------------------------
*
**/
/**
* map2Obj
*
* @param map
* @return
*/
private DBObject map2Obj(Map<String, Object> map) {
DBObject obj = new BasicDBObject();
obj.putAll(map);
return obj;
}
/**
* encoder obj2str
*
* @param o
* @return
* @throws Exception
*/
private String encoder(Object o) throws Exception {
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
DataOutputStream dataOutStream = new DataOutputStream(outStream);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(
dataOutStream);
objectOutputStream.writeObject(o);
objectOutputStream.flush();
objectOutputStream.close();
byte[] bytes = outStream.toByteArray();
BASE64Encoder encoder = new sun.misc.BASE64Encoder();
return encoder.encode(bytes);
}
/**
* decoder str2obj
*
* @param s
* @return
* @throws Exception
*/
private Object decoder(Object s) throws Exception {
BASE64Decoder decoder = new sun.misc.BASE64Decoder();
byte[] bytes = decoder.decodeBuffer((String) s);
ByteArrayInputStream inStream = new ByteArrayInputStream(bytes);
DataInputStream dataInStream = new DataInputStream(inStream);
ObjectInputStream objectInputStream = new ObjectInputStream(
dataInStream);
return objectInputStream.readObject();
}
/**
* ------------------------------------------------------------------------
*
**/
/**
* main
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// Map m = new HashMap();
// m.put("id", "123");
// m.put("name", "ddh");
// System.out.println(getInstance().insert(m));
// System.out.println(getInstance().findOne(m));
// System.out.println(getInstance().find(m));
/*
* String basepath =
* Test.class.getResource("/").getPath().replaceFirst("/WEB-INF/classes/"
* , "/").replaceFirst("/", ""); String filePath = basepath + "file/" +
* "h.mp4"; File file = new File(filePath); String
* k=filePath.split("\\.")[filePath.split("\\.").length-1]; String
* newfn=UUID.randomUUID().toString(); newfn=newfn+"."+k; if
* (file.exists()) { try{ //getInstance().saveFile(file,newfn);
* //System.out.println("save ok!"); } catch (Exception e) {
* e.printStackTrace(); } }
*/
/* GridFSDBFile gf=getInstance().findFileByName("5a89dab7-10ab-4d0e-b22f-c0336d574d1f.mp4");
gf.writeTo(basepath + "file/"+gf.getFilename());
*/
/*Map m = new HashMap();
m.put("filename", "5a89dab7-10ab-4d0e-b22f-c0336d574d1f.mp4");
System.out.println(getInstance().getInstance().findFiles(m));*/
/*getInstance().deleteAll();
System.out.println(getInstance().getCount());
System.out.println(getInstance().getAll());*/
}
}
分享到:
相关推荐
### MongoDB常用命令详解 #### 一、数据库管理 在MongoDB中,数据库是存储文档的容器,通过一系列的命令可以方便地对数据库进行管理和操作。 ##### 1. 帮助命令 (Help) - **命令格式**: `help`, `db.help()`, `db...
在管理和操作MongoDB时,批处理脚本是一个高效的方法,特别是对于执行重复性的任务,如安装、启动、停止和配置服务。以下是根据提供的文件名解析出的MongoDB相关知识点: 1. **安装MongoDB服务**: - `install.bat...
mongodb常用函数使用案例,主要是针对update,insert,find函数
主要介绍了mongodb安装、常用命令、举例、数据导入导出及备份恢复,适用于初学者学习使用。
以下是一些关于MongoDB常用SQL操作的关键知识点: 1. **数据模型**:MongoDB基于JSON(JavaScript Object Notation)格式的文档存储数据,这使得它能够存储复杂的数据结构,如嵌套对象和数组。 2. **连接MongoDB**...
在centos7下安装部署mongodb分片+副本集群常用命令整理,内容包含,安装、配置、启动、访问shell终端等命令
MongoDB常用操作命令大全 数据库常用命令 Collection聚集集合 用户相关 聚集集合查询
mongodb php distinct command --- mongoDb 常用命令
包含对数据库、集合、文档的常用操作。
在MongoDB中,常用的操作语句可以分为数据定义语言(DDL)和数据操纵语言(DML)。 **DDL操作:** 1. 创建集合(表) - 语法:`db.createCollection("collectionName")` - 实例:创建一个名为`user2`的集合,...
### MongoDB常用操作命令详解 #### 一、启动与配置MongoDB服务 在开始介绍具体的数据库操作之前,我们先了解如何启动和配置MongoDB服务。以下是一些常用的命令: 1. **启动MongoDB服务(默认数据目录)** ```...
MongoDB Java Driver提供了与MongoDB服务器通信的类和方法,使得Java应用能够无缝地与MongoDB集成。 总的来说,MongoDB的灵活性、强大的查询能力和高性能使其在处理复杂、非结构化或半结构化数据时表现出色。通过...
Spring Data MongoDB是一个强大的Java库,它为开发人员提供了一种简单的方式来访问和操作MongoDB数据库。这个库是Spring Data框架的一部分,旨在简化数据访问层的实现,尤其在使用NoSQL数据库如MongoDB时。MongoDB...
本文主要探讨MongoDB的一些常用管理命令,包括启动与关闭MongoDB服务、查看服务状态、用户管理和数据库备份与修复。 1. 启动MongoDB服务 要运行MongoDB,首先需要在命令行中进入MongoDB安装目录的bin子目录,然后...
MongoDB 是一种流行的开源文档型数据库,以其灵活性...以上就是MongoDB中涉及的一些常用命令,它们涵盖了数据库管理、集合操作、用户管理和数据查询等多个方面。理解并熟练掌握这些命令对于日常的MongoDB操作至关重要。
MongoDB是一种流行的开源文档型数据库,它以JSON格式存储数据,具有高性能、高可用性和可扩展性。在本文中,我们将深入探讨MongoDB的一些基本使用和常见操作。 1、创建、查询数据库 创建数据库非常简单,只需使用`...
MongoDB 数据库常用命令大全 MongoDB 是 NoSQL 数据库系统中比较流行的数据库之一。它也是最接近关系型数据库的,一个数据库可以包含多个集合(Collection),类似于关系数据库中的表;而每个集合中可以存储一组由...
MongoDB是一种基于分布式文件存储的开源数据库系统,以其强大的查询语言、灵活性和高可扩展性在处理大量数据时表现出色。MongoDB的核心特点是文档导向,这意味着数据以BSON(Binary JSON)格式存储,这是一种轻量级...
本手册涵盖了MongoDB的基础操作,旨在帮助初学者快速掌握其核心命令,以下是15条常用命令的详细说明: 1. **启动MongoDB服务**:在命令行中输入`mongod`启动MongoDB服务器,通常需要指定数据存储目录,如`mongod --...