zoukankan      html  css  js  c++  java
  • MongoDB(二)-- Java API 实现增删改查

    一、下载jar包

      http://central.maven.org/maven2/org/mongodb/mongo-java-driver/

    二、代码实现

      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 class MongoDBTest {
     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 }

    三、源码下载

      点我下载

     

  • 相关阅读:
    Apache2的安装
    JVM(9) 程序编译及代码优化
    Java基础(43)Queue队列
    Java基础(42)AbstractSet类
    OptimalSolution(10)--日常
    OptimalSolution(9)--其他问题(1)
    OptimalSolution(9)--其他问题(2)
    OptimalSolution(8)--位运算
    OptimalSolution(7)--大数据和空间限制
    golang教程汇总
  • 原文地址:https://www.cnblogs.com/xbq8080/p/6669492.html
Copyright © 2011-2022 走看看