`
ddh9504
  • 浏览: 112429 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

mongodb 常用方法

 
阅读更多

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常用命令详解 #### 一、数据库管理 在MongoDB中,数据库是存储文档的容器,通过一系列的命令可以方便地对数据库进行管理和操作。 ##### 1. 帮助命令 (Help) - **命令格式**: `help`, `db.help()`, `db...

    MongoDB常用命令批处理

    在管理和操作MongoDB时,批处理脚本是一个高效的方法,特别是对于执行重复性的任务,如安装、启动、停止和配置服务。以下是根据提供的文件名解析出的MongoDB相关知识点: 1. **安装MongoDB服务**: - `install.bat...

    mongodb常用函数使用案例

    mongodb常用函数使用案例,主要是针对update,insert,find函数

    mongodb常用知识集锦

    主要介绍了mongodb安装、常用命令、举例、数据导入导出及备份恢复,适用于初学者学习使用。

    MongoDB常用SQL操作

    以下是一些关于MongoDB常用SQL操作的关键知识点: 1. **数据模型**:MongoDB基于JSON(JavaScript Object Notation)格式的文档存储数据,这使得它能够存储复杂的数据结构,如嵌套对象和数组。 2. **连接MongoDB**...

    mongodb常用命令.txt

    在centos7下安装部署mongodb分片+副本集群常用命令整理,内容包含,安装、配置、启动、访问shell终端等命令

    MongoDB常用操作命令大全

    MongoDB常用操作命令大全 数据库常用命令 Collection聚集集合 用户相关 聚集集合查询

    mongoDb 常用命令

    mongodb php distinct command --- mongoDb 常用命令

    MongoDB常用命令汇总

    包含对数据库、集合、文档的常用操作。

    MongoDB常用SQL操作.pdf

    在MongoDB中,常用的操作语句可以分为数据定义语言(DDL)和数据操纵语言(DML)。 **DDL操作:** 1. 创建集合(表) - 语法:`db.createCollection("collectionName")` - 实例:创建一个名为`user2`的集合,...

    MongoDB常用的操作命令.txt

    ### MongoDB常用操作命令详解 #### 一、启动与配置MongoDB服务 在开始介绍具体的数据库操作之前,我们先了解如何启动和配置MongoDB服务。以下是一些常用的命令: 1. **启动MongoDB服务(默认数据目录)** ```...

    Mongodb常用命令和java调用

    MongoDB Java Driver提供了与MongoDB服务器通信的类和方法,使得Java应用能够无缝地与MongoDB集成。 总的来说,MongoDB的灵活性、强大的查询能力和高性能使其在处理复杂、非结构化或半结构化数据时表现出色。通过...

    spring-data使用mongodbTemplate对MongoDB进行读写操作

    Spring Data MongoDB是一个强大的Java库,它为开发人员提供了一种简单的方式来访问和操作MongoDB数据库。这个库是Spring Data框架的一部分,旨在简化数据访问层的实现,尤其在使用NoSQL数据库如MongoDB时。MongoDB...

    mongodb常用管理命令.pdf

    本文主要探讨MongoDB的一些常用管理命令,包括启动与关闭MongoDB服务、查看服务状态、用户管理和数据库备份与修复。 1. 启动MongoDB服务 要运行MongoDB,首先需要在命令行中进入MongoDB安装目录的bin子目录,然后...

    mongoDB常用命令1

    MongoDB 是一种流行的开源文档型数据库,以其灵活性...以上就是MongoDB中涉及的一些常用命令,它们涵盖了数据库管理、集合操作、用户管理和数据查询等多个方面。理解并熟练掌握这些命令对于日常的MongoDB操作至关重要。

    MongoDB常用语法/Mongodb的基本使用

    MongoDB是一种流行的开源文档型数据库,它以JSON格式存储数据,具有高性能、高可用性和可扩展性。在本文中,我们将深入探讨MongoDB的一些基本使用和常见操作。 1、创建、查询数据库 创建数据库非常简单,只需使用`...

    MongoDB数据库常用命令.docx

    MongoDB 数据库常用命令大全 MongoDB 是 NoSQL 数据库系统中比较流行的数据库之一。它也是最接近关系型数据库的,一个数据库可以包含多个集合(Collection),类似于关系数据库中的表;而每个集合中可以存储一组由...

    mongodb常用命令.docx

    MongoDB是一种基于分布式文件存储的开源数据库系统,以其强大的查询语言、灵活性和高可扩展性在处理大量数据时表现出色。MongoDB的核心特点是文档导向,这意味着数据以BSON(Binary JSON)格式存储,这是一种轻量级...

    MongoDB常用命令手册.zip

    本手册涵盖了MongoDB的基础操作,旨在帮助初学者快速掌握其核心命令,以下是15条常用命令的详细说明: 1. **启动MongoDB服务**:在命令行中输入`mongod`启动MongoDB服务器,通常需要指定数据存储目录,如`mongod --...

Global site tag (gtag.js) - Google Analytics