设为首页 收藏本站
查看: 2263|回复: 0

[经验分享] MongoDB(二)

[复制链接]

尚未签到

发表于 2017-12-15 13:08:05 | 显示全部楼层 |阅读模式
1 package com.xbq.mongodb;  

  2 import java.util.ArrayList;  

  3 import java.util.HashMap;  

  4 import java.util.List;  

  5 import java.util.Map;  

  6 import org.bson.types.ObjectId;  

  7 import com.mongodb.BasicDBObject;  

  8 import com.mongodb.DB;  

  9 import com.mongodb.DBCollection;  

10 import com.mongodb.DBCursor;  

11 import com.mongodb.DBObject;  

12 import com.mongodb.Mongo;  

13 import com.mongodb.util.JSON;  

14  
15 /**
  
16  * @ClassName: MongoDBTest
  
17  * @Description: TODO MongoDB 增删改查 操作,包含批量操作
  
18  * @author xbq
  
19  * @version 1.0
  
20  * @date 2017-4-5 上午11:50:06
  
21  */

  
22 public>  
23
  
24     private static final String HOST = "192.168.242.129";
  
25     private static final int PORT = 27017;
  
26     private static final String DB_NAME = "testDB";
  
27     private static Mongo mongo;
  
28     private static DB db;
  
29     
  
30     static {
  
31         // 连接到MongoDB
  
32         mongo = new Mongo(HOST, PORT);
  
33         // 打开数据库 testDB
  
34         db = mongo.getDB(DB_NAME);
  
35     }
  
36     
  
37     public static void main(String[] args) {
  
38         // 获取集合 xbqTable,若该集合不存在,mongoDB将自动创建该集合
  
39         DBCollection dbCollection = db.getCollection("testTable");
  
40         
  
41         // 查询该数据库所有的集合名
  
42         for(String name : mongo.getDatabaseNames()){
  
43             System.out.println(name);
  
44         }
  
45         
  
46 //        addOne(dbCollection);
  
47 //        addList(dbCollection);
  
48 //        addByJson(dbCollection);
  
49         
  
50 //        deleteOne(dbCollection);
  
51 //        deleteByIn(dbCollection);
  
52 //        deleteAll(dbCollection);
  
53         
  
54 //        updateOne(dbCollection);
  
55 //        updateMulti(dbCollection);
  
56         
  
57 //        queryOne(dbCollection);
  
58 //        queryPage(dbCollection);
  
59 //        queryRange(dbCollection);
  
60         queryList(dbCollection);
  
61         
  
62     }
  
63     
  
64     
  
65     // ====================================查询开始==============================================
  
66     /**
  
67      * @Title: queryOne
  
68      * @Description: TODO 查询 name为 张三的 一条记录
  
69      * @param dbCollection
  
70      * @return: void
  
71      */
  
72     public static void queryOne(DBCollection dbCollection){
  
73         DBObject documents = new BasicDBObject("name","张三");
  
74         DBObject result = dbCollection.findOne(documents);
  
75         System.out.println(result);
  
76     }
  
77     
  
78     /**
  
79      * @Title: queryPage
  
80      * @Description: TODO 分页查询  , 查询 跳过前2条 后的 3条 数据
  
81      * @param dbCollection
  
82      * @return: void
  
83      */
  
84     public static void queryPage(DBCollection dbCollection){
  
85         DBCursor cursor = dbCollection.find().skip(2).limit(3);
  
86         while (cursor.hasNext()) {
  
87             System.out.println(cursor.next());
  
88         }
  
89     }
  
90     
  
91     /**
  
92      * @Title: queryRange
  
93      * @Description: TODO 范围查询,查询 第3条 到 第5条 之间的记录
  
94      * @param dbCollection
  
95      * @return: void
  
96      */
  
97     public static void queryRange(DBCollection dbCollection) {
  
98         DBObject range = new BasicDBObject();
  
99         range.put("$gte", 50);
  
100         range.put("$lte", 52);
  
101         
  
102         DBObject dbObject = new BasicDBObject();
  
103         dbObject.put("age", range);
  
104         DBCursor cursor = dbCollection.find(dbObject);
  
105         while (cursor.hasNext()) {
  
106             System.out.println(cursor.next());
  
107         }
  
108     }
  
109     
  
110     /**'
  
111      * @Title: queryList
  
112      * @Description: TODO 查询出全部的 记录
  
113      * @param dbCollection
  
114      * @return: void
  
115      */
  
116     public static void queryList(DBCollection dbCollection) {
  
117         DBCursor cursor = dbCollection.find();
  
118         DBObject dbObject = null;
  
119         while(cursor.hasNext()){
  
120             dbObject = cursor.next();
  
121             System.out.println(dbObject);
  
122         }
  
123     }
  
124     
  
125     // ====================================增加开始==============================================
  
126     /**
  
127      * @Title: addOne
  
128      * @Description: TODO 新增 一条记录
  
129      * @param dbCollection
  
130      * @return: void
  
131      */
  
132     public static void addOne(DBCollection dbCollection){
  
133         DBObject documents = new BasicDBObject("name","张三").append("age", 45).append("sex", "男").append("address",
  
134                 new BasicDBObject("postCode", 100000).append("street", "深南大道888号").append("city", "深圳"));
  
135         dbCollection.insert(documents);
  
136     }
  
137     
  
138     /**
  
139      * @Title: addList
  
140      * @Description: TODO 批量新增 记录    , 增加的记录 中 可以使用各种数据类型
  
141      * @param dbCollection
  
142      * @return: void
  
143      */
  
144     public static void addList(DBCollection dbCollection){
  
145         List<DBObject> listdbo= new ArrayList<DBObject>();
  
146         DBObject dbObject = new BasicDBObject();
  
147         dbObject.put("name", "老王");
  
148         // 可以直接保存List类型
  
149         List<String> list = new ArrayList<String>();
  
150         list.add("非隔壁老王");
  
151         dbObject.put("remark", list);
  
152         listdbo.add(dbObject);
  
153         
  
154         dbObject = new BasicDBObject();
  
155         // 可以直接保存map
  
156         Map<String,List<String>> map = new HashMap<String,List<String>>();
  
157         List<String> hobbys = new ArrayList<String>();
  
158         hobbys.add("看花");
  
159         hobbys.add("采花");
  
160         map.put("爱好", hobbys);
  
161         dbObject.put("hobby", map);
  
162         listdbo.add(dbObject);
  
163         
  
164         dbObject = new BasicDBObject();
  
165         dbObject.put("name", "老张");
  
166         dbObject.put("age", 52);
  
167         dbObject.put("job", "看守老王");
  
168         dbObject.put("remark", new BasicDBObject("address", "广东省深圳市").append("street", "深南大道888号"));
  
169         listdbo.add(dbObject);
  
170         
  
171         dbCollection.insert(listdbo);
  
172     }
  
173     
  
174     /**
  
175      * @Title: addByJson
  
176      * @Description: TODO json转对象后 ,执行新增
  
177      * @param dbCollection
  
178      * @return: void
  
179      */
  
180     public static void addByJson(DBCollection dbCollection){
  
181         String json = "{ \"name\" : \"王五\" , \"age\" : 66 , \"job\" : \"看守老王\" , \"remark\" : { \"address\" : \"广东省深圳市\" , \"street\" : \"深南大道888号\"}}";
  
182         DBObject dbObject = (DBObject) JSON.parse(json);
  
183         dbCollection.insert(dbObject);
  
184     }
  
185     
  
186     // ====================================修改开始==============================================
  
187     /**
  
188      * @Title: update
  
189      * @Description: TODO 修改指定记录
  
190      * @param dbCollection
  
191      * @return: void
  
192      */
  
193     public static void updateOne(DBCollection dbCollection) {
  
194         // 先根据id查询将 这条 记录查询出来
  
195         DBObject qryResult = dbCollection.findOne(new ObjectId("58e4a11c6c166304f0635958"));
  
196         // 修改指定的值
  
197         qryResult.put("age", 55);
  
198         
  
199         DBObject olddbObject = new BasicDBObject();
  
200         olddbObject.put("_id", new ObjectId("58e4a11c6c166304f0635958"));
  
201         dbCollection.update(olddbObject, qryResult);
  
202     }
  
203     
  
204     /**
  
205      * @Title: updateMulti
  
206      * @Description: TODO 修改 多条记录
  
207      * @param dbCollection
  
208      * @return: void
  
209      */
  
210     public static void updateMulti(DBCollection dbCollection) {
  
211         DBObject newdbObject = new BasicDBObject();
  
212         newdbObject.put("name", "张三");
  
213         newdbObject.put("address", "广东深圳");
  
214         newdbObject.put("remark", "张三是一个NB的Coder");
  
215         
  
216         DBObject olddbObject = new BasicDBObject();
  
217         olddbObject.put("name", "张三");
  
218         // 需要加上这个
  
219         DBObject upsertValue = new BasicDBObject("$set", newdbObject);  
  
220         // 后面的两个参数:1.若所更新的数据没有,则插入 ; 2、同时更新多个符合条件的文档(collection)
  
221         dbCollection.update(olddbObject, upsertValue, true, true);
  
222     }
  
223     
  
224     // ====================================删除开始==============================================
  
225     /**
  
226      * @Title: deleteFirst
  
227      * @Description: TODO 删除第一个
  
228      * @param
  
229      * @return: void
  
230      */
  
231     public static void deleteFirst(DBCollection dbCollection){
  
232         DBObject dbObject = dbCollection.findOne();
  
233         dbCollection.remove(dbObject);
  
234     }
  
235     
  
236     /**
  
237      * @Title: deleteOne
  
238      * @Description: TODO 删除指定的一条记录
  
239      * @param dbCollection
  
240      * @return: void
  
241      */
  
242     public static void deleteOne(DBCollection dbCollection){
  
243         DBObject dbObject = new BasicDBObject();
  
244         dbObject.put("_id", new ObjectId("58e49c2d6c166309e0d50484"));
  
245         dbCollection.remove(dbObject);
  
246     }
  
247     
  
248     /**
  
249      * @Title: deleteByIn
  
250      * @Description: TODO 删除多条记录      例如:select * from tb where name in('12','34')
  
251      * @param dbCollection
  
252      * @return: void
  
253      */
  
254     public static void deleteByIn(DBCollection dbCollection) {
  
255         List<String> list = new ArrayList<String>();
  
256         list.add("老张");
  
257         list.add("老王");
  
258         list.add("张三");
  
259         DBObject dbObject = new BasicDBObject("$in", list);
  
260         
  
261         DBObject delObject = new BasicDBObject();
  
262         delObject.put("name", dbObject);
  
263         dbCollection.remove(delObject);
  
264     }
  
265     
  
266     /**
  
267      * @Title: deleteAll
  
268      * @Description: TODO 删除全部的记录
  
269      * @param dbCollection
  
270      * @return: void
  
271      */
  
272     public static void deleteAll(DBCollection dbCollection){
  
273         DBCursor cursor = dbCollection.find();
  
274         while(cursor.hasNext()){
  
275             dbCollection.remove(cursor.next());
  
276         }
  
277     }
  
278 }

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-424348-1-1.html 上篇帖子: mongodb的安装和启动 下篇帖子: 我所理解的Mongodb 的优势
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表