一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - MongoDB - Java操作MongoDB數據庫示例分享

Java操作MongoDB數據庫示例分享

2020-04-28 14:55MongoDB教程網 MongoDB

MongoDB是一個文檔型數據庫,是NOSQL家族中最重要的成員之一,以下代碼封裝了MongoDB的基本操作。具體都在備注當中,要仔細看哦

MongoDB是一個文檔型數據庫,是NOSQL家族中最重要的成員之一,以下代碼封裝了MongoDB的基本操作。

MongoDBConfig.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package com.posoftframework.mongodb;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import com.mongodb.DB;
import com.mongodb.Mongo;
/**
 * MongoDB配置類
 *
 * @author yongtree
 * @date 2010-7-7 下午07:45:08
 * @version 1.0
 */
public class MongoDBConfig {
  private static Mongo mongo;
  private static DB db;
  private static final String MONGO_DB_ADDRESS = "localhost";
  private static final int MONGO_DB_PORT = 27017;
  private static final String MONGO_DB_USERNAME = "root";
  private static final String MONGO_DB_PASSWORD = "root";
  private static final String MONGO_DB_DBNAME = "mongodb";
  private static final String MONGO_DB_RESOURCE_FILE = "mongodb.cfg.properties";
  /**
   * Mongo數據庫參數
   */
  private static Map<String, String> cfgMap = new HashMap<String, String>();
  private static Hashtable<String, DB> mongoDBs = new Hashtable<String, DB>();
  /**
   * 初始化Mongo的數據庫
   */
  static {
    init();
  }
  public static File getConfigFile() {
    String path = MongoDBConfig.class.getResource("/").getPath();
    String fileName = path + MONGO_DB_RESOURCE_FILE;
    File file = new File(fileName);
    if (file.exists()) {
      return file;
    }
    return null;
  }
  @SuppressWarnings("unchecked")
  private static void initCfgMap() {
    File file = getConfigFile();
    if (file != null) {
      Properties p = new Properties();
      try {
        p.load(new FileInputStream(file));
        for (Enumeration enu = p.propertyNames(); enu.hasMoreElements();) {
          String key = (String) enu.nextElement();
          String value = (String) p.getProperty(key);
          cfgMap.put(key, value);
        }
      } catch (IOException e) {
        System.out.println("記載Mongo配置文件失敗!");
        e.printStackTrace();
      }
    } else {
      cfgMap.put("mongo.db.address", MONGO_DB_ADDRESS);
      cfgMap.put("mongo.db.port", String.valueOf(MONGO_DB_PORT));
      cfgMap.put("mongo.db.username", MONGO_DB_USERNAME);
      cfgMap.put("mongo.db.password", MONGO_DB_PASSWORD);
      cfgMap.put("mongo.db.dbname", MONGO_DB_DBNAME);
    }
  }
  /**
   * 初始化Mongo數據庫
   */
  private static void init() {
    initCfgMap();
    try {
      String address = cfgMap.get("mongo.db.address");
      int port = Integer.parseInt(cfgMap.get("mongo.db.port").toString());
      String dbName = cfgMap.get("mongo.db.dbname");
      String username = cfgMap.get("mongo.db.username");
      String password = cfgMap.get("mongo.db.password");
      mongo = new Mongo(address, port);
      if (dbName != null && !"".equals(dbName)) {
        db = mongo.getDB(dbName);
        if (username != null && !"".equals(username)) {
          db.addUser(username, password.toCharArray());
        }
        mongoDBs.put(dbName, db);
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  /**
   * 得到Mongo的實例
   *
   * @return
   */
  public static Mongo getMongo() {
    return mongo;
  }
  /**
   * 得到Mongo的圖片數據庫
   *
   * @return
   */
  public static DB getDB() {
    return db;
  }
  public static List<String> getDBNames() {
    return mongo.getDatabaseNames();
  }
  /**
   * 根據數據庫名稱,得到數據庫<br/>
   * 如果不存在,則創建一個該名稱的數據庫,并設置用戶名和密碼為配置文件中的參數值</br>
   *
   * @param dbName
   * @return
   */
  public static DB getDBByName(String dbName) {
    DB db = mongo.getDB(dbName);
    if (!mongoDBs.contains(db)) {
      db.addUser(cfgMap.get("mongo.db.username"), cfgMap.get(
          "mongo.db.password").toCharArray());
      mongoDBs.put(dbName, db);
    }
    return db;
  }
}

MongoService.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/************************* 版權聲明 *********************************
 *                                                               *
 *           版權所有:百洋軟件                                                    *
 *     Copyright (c) 2010 by www.po-soft.com                        *
 *                                                               *
 ************************* 變更記錄 *********************************
 *
 * 創建者:yongtree  創建日期: 2010-7-7
 * 備注:
 *
 * 修改者:    修改日期:
 * 備注:
 *
 */
package com.posoftframework.mongodb;
import java.util.List;
import java.util.Map;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
/**
 * 操作MongoDB的DAO接口
 *
 * @author yongtree
 * @date 2010-7-7 下午04:44:43
 * @version 1.0
 */
public interface MongoService {
  public abstract DBCollection getCollection();
  /**
   * 根據數據集合的Map,插入數據 map的key對應數據庫中的DBCollection的key值
   *
   * @param obj
   */
  public abstract DBObject insert(DBObject obj);
  /**
   * 根據List<Map<String,Object>>結構的數據集合,插入數據
   *
   * @param list
   */
  public abstract void insertBatch(List<DBObject> list);
  /**
   * 按照條件參數集合map,刪除數據
   *
   * @param map
   */
  public abstract void delete(DBObject obj);
  /**
   * 按照多種條件的并集,批量刪除數據
   *
   * @param list
   */
  public abstract void deleteBatch(List<DBObject> list);
  /**
   * 得到Collection()總的記錄數
   *
   * @return
   */
  public abstract long getCollectionCount();
  public abstract long getCount(DBObject query);
  public abstract List<DBObject> find(DBObject query);
  public abstract List<DBObject> find(DBObject query,DBObject sort);
  public abstract List<DBObject> find(DBObject query,DBObject sort,int start,int limit);
  /**
   * 根據whereFields參數,更新setFields值
   *
   * @param setFields
   * @param whereFields
   */
  public abstract void update(DBObject setFields,
      DBObject whereFields);
  public abstract List<DBObject> findAll();
  /**
   * 根據ID找到唯一數據 有1個id字段標記
   *
   * @param id
   * @return
   */
  public abstract DBObject getById(String id);
  /**
   * 獲取所有數據庫名稱
   *
   * @return
   */
  public List<String> getAllDBNames();
  public abstract String getDbName();
  public abstract void setDbName(String dbName);
  public abstract DB getDb();
  public abstract String getCollName();
  public abstract void setCollName(String collName);
}

MongoServiceImpl.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
/************************* 版權聲明 *********************************
 *                                                               *
 *           版權所有:百洋軟件                                                    *
 *     Copyright (c) 2010 by www.po-soft.com                        *
 *                                                               *
 ************************* 變更記錄 *********************************
 *
 * 創建者:yongtree  創建日期: 2010-7-7
 * 備注:
 *
 * 修改者:    修改日期:
 * 備注:
 *
 */
package com.posoftframework.mongodb;
import java.util.ArrayList;
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.DBCursor;
import com.mongodb.DBObject;
/**
 *
 * @author yongtree
 * @date 2010-7-7 下午07:22:15
 * @version 1.0
 */
public class MongoServiceImpl implements MongoService {
  private String dbName;
  private String collName;
  private DB db;
  public MongoServiceImpl(String dbName, String collName) {
    this.dbName = dbName;
    this.collName = collName;
    try {
      db = MongoDBConfig.getDBByName(this.dbName);
    } catch (Throwable e) {
      e.printStackTrace();
    }
  }
  public MongoServiceImpl() {
    getDb();
  }
  public DBCollection getCollection() {
    return db.getCollection(this.collName);
  }
  public DBObject map2Obj(Map<String, Object> map) {
    DBObject obj = new BasicDBObject();
    if (map.containsKey("class") && map.get("class") instanceof Class)
      map.remove("class");
    obj.putAll(map);
    return obj;
  }
  public DBObject insert(DBObject obj) {
    getCollection().insert(obj);
    return obj;
  }
  public void insertBatch(List<DBObject> list) {
    if (list == null || list.isEmpty()) {
      return;
    }
    List<DBObject> listDB = new ArrayList<DBObject>();
    for (int i = 0; i < list.size(); i++) {
      listDB.add(list.get(i));
    }
    getCollection().insert(listDB);
  }
  public void delete(DBObject obj) {
    getCollection().remove(obj);
  }
  public void deleteBatch(List<DBObject> list) {
    if (list == null || list.isEmpty()) {
      return;
    }
    for (int i = 0; i < list.size(); i++) {
      getCollection().remove(list.get(i));
    }
  }
  public long getCollectionCount() {
    return getCollection().getCount();
  }
  public long getCount(DBObject obj) {
    if (obj != null)
      return getCollection().getCount(obj);
    return getCollectionCount();
  }
  public List<DBObject> find(DBObject obj) {
    DBCursor cur = getCollection().find(obj);
    return DBCursor2list(cur);
  }
  @Override
  public List<DBObject> find(DBObject query, DBObject sort) {
    DBCursor cur;
    if (query != null) {
      cur = getCollection().find(query);
    } else {
      cur = getCollection().find();
    }
    if (sort != null) {
      cur.sort(sort);
    }
    return DBCursor2list(cur);
  }
  @Override
  public List<DBObject> find(DBObject query, DBObject sort, int start,
      int limit) {
    DBCursor cur;
    if (query != null) {
      cur = getCollection().find(query);
    } else {
      cur = getCollection().find();
    }
    if (sort != null) {
      cur.sort(sort);
    }
    if (start == 0) {
      cur.batchSize(limit);
    } else {
      cur.skip(start).limit(limit);
    }
    return DBCursor2list(cur);
  }
  private List<DBObject> DBCursor2list(DBCursor cur) {
    List<DBObject> list = new ArrayList<DBObject>();
    if (cur != null) {
      list = cur.toArray();
    }
    return list;
  }
  public void update(DBObject setFields, DBObject whereFields) {
    getCollection().updateMulti(setFields, whereFields);
  }
  public List<DBObject> findAll() {
    DBCursor cur = getCollection().find();
    List<DBObject> list = new ArrayList<DBObject>();
    if (cur != null) {
      list = cur.toArray();
    }
    return list;
  }
  public DBObject getById(String id) {
    DBObject obj = new BasicDBObject();
    obj.put("_id", new ObjectId(id));
    DBObject result = getCollection().findOne(obj);
    return result;
  }
  public String getDbName() {
    return dbName;
  }
  public void setDbName(String dbName) {
    this.dbName = dbName;
    this.db = MongoDBConfig.getDBByName(this.dbName);
  }
  public String getCollName() {
    return collName;
  }
  public void setCollName(String collName) {
    this.collName = collName;
  }
  public DB getDb() {
    if (this.db == null) {
      if (this.dbName == null) {
        this.db = MongoDBConfig.getDB();
      } else {
        this.db = MongoDBConfig.getDBByName(this.dbName);
      }
    }
    return this.db;
  }
  public List<String> getAllDBNames() {
    return MongoDBConfig.getDBNames();
  }
}

 

延伸 · 閱讀

精彩推薦
  • MongoDBMongoDB 內存使用情況分析

    MongoDB 內存使用情況分析

    都說 MongoDB 是個內存大戶,但是怎么知道它到底用了多少內存呢...

    MongoDB教程網10002020-09-29
  • MongoDBmongodb基本命令實例小結

    mongodb基本命令實例小結

    這篇文章主要介紹了mongodb基本命令,結合實例形式總結分析了MongoDB數據庫切換、查看、刪除、查詢等基本命令用法與操作注意事項,需要的朋友可以參考下...

    dawn-liu3652020-05-26
  • MongoDBMongodb實現定時備份與恢復的方法教程

    Mongodb實現定時備份與恢復的方法教程

    這篇文章主要給大家介紹了Mongodb實現定時備份與恢復的方法教程,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面...

    chenjsh364522020-05-13
  • MongoDB分布式文檔存儲數據庫之MongoDB分片集群的問題

    分布式文檔存儲數據庫之MongoDB分片集群的問題

    這篇文章主要介紹了分布式文檔存儲數據庫之MongoDB分片集群的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋...

    Linux-18743072020-12-20
  • MongoDBMongoDB中javascript腳本編程簡介和入門實例

    MongoDB中javascript腳本編程簡介和入門實例

    作為一個數據庫,MongoDB有一個很大的優勢——它使用js管理數據庫,所以也能夠使用js腳本進行復雜的管理——這種方法非常靈活 ...

    MongoDB教程網6982020-04-24
  • MongoDBMongoDB憑什么躋身數據庫排行前五

    MongoDB憑什么躋身數據庫排行前五

    MongoDB以比去年同期超出65.96分的成績繼續雄踞榜單前五,這個增幅在全榜僅次于PostgreSQL的77.99,而其相對于4月份的6.10分的增長也是僅次于微軟SQL Server排名...

    孫浩峰3892020-05-22
  • MongoDB遷移sqlserver數據到MongoDb的方法

    遷移sqlserver數據到MongoDb的方法

    這篇文章主要介紹了遷移sqlserver數據到MongoDb的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下...

    聽楓xl9682021-01-03
  • MongoDBMongoDB安裝圖文教程

    MongoDB安裝圖文教程

    這篇文章主要為大家詳細介紹了MongoDB安裝圖文教程,分為兩大部分為大家介紹下載MongoDB和安裝MongoDB的方法,感興趣的小伙伴們可以參考一下 ...

    Yangyi.He6132020-05-07
主站蜘蛛池模板: 无码一区国产欧美在线资源 | 四虎网址 | 999久久免费高清热精品 | 午夜深情在线观看免费 | 亚洲激情自拍偷拍 | 亚洲成人综合在线 | 精品免费视在线视频观看 | 国产香蕉国产精品偷在线观看 | 先锋资源av | 欧美日韩国产一区二区三区不卡 | 亚洲冬月枫中文字幕在线看 | 久久中文字幕无线观看 | 天天视频官网天天视频在线 | 久久这里只精品热在线18 | 91亚洲精品国产自在现线 | 久久青青草视频在线观 | 肉文np高h | 国产综合成人久久大片91 | 亚欧视频在线观看 | 韩国三级hd中文字幕李采潭 | 国产91亚洲精品 | 日产精品一卡2卡三卡4乱码久久 | 日本视频免费在线 | 日本连裤袜xxxxx在线视频 | 男人懂得网站 | 10个免费货源网站 | 亚洲成a人片777777久久 | china精品对白普通话 | 精品在线播放视频 | 免费人成网址在线观看国内 | 色婷亚洲| 亚洲人成伊人成综合网久久 | 桃色公寓 | 成人免费观看在线视频 | 亚洲国产精品ⅴa在线观看 亚洲国产高清一区二区三区 | 特黄视频免费看 | 日本三级香港三级久久99 | 三极片在线观看 | 国产白虎 | 好姑娘完整版在线观看中文 | 天美影视文化传媒mv免费 |