国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 數(shù)據(jù)庫 > MongoDB > 正文

Java操作MongoDB數(shù)據(jù)庫方法詳解

2020-10-29 18:44:27
字體:
來源:轉載
供稿:網(wǎng)友

Java與mongodb的連接

1. 連單臺mongodb

Mongo mg = new Mongo();//默認連本機127.0.0.1 端口為27017Mongo mg = new Mongo(ip);//可以指定ip 端口默認為27017Mongo mg = new Mongo(ip,port);//也可以指定ip及端口

2. 連雙臺mongodb

//ip為主機ip地址,port為端口號,dataBaseName相當于數(shù)據(jù)庫名DBAddress left = new DBAddress("ip:port/dataBaseName");DBAddress right = new DBAddress("ip:port/dataBaseName ");//若一個mongodb出現(xiàn)問題,會自動連另外一臺Mongo mongo = new Mongo(left, right);

3. 連多臺mongodb

List<ServerAddress> mongoHostList = new ArrayList<ServerAddress>();mongoHostList.add(new ServerAddress("ip",port));mongoHostList.add(new ServerAddress("ip",port));mongoHostList.add(new ServerAddress("ip",port));Mongo mg = new Mongo(mongoHostList);

Java獲取mongodb的數(shù)據(jù)庫名

1. 獲取mongodb的db(數(shù)據(jù)庫)

//dataBaseName相當于關系數(shù)據(jù)庫里的數(shù)據(jù)庫名,mongodb中若沒有該//數(shù)據(jù)庫名也不會報錯,默認mongodb會建立這個數(shù)據(jù)庫名,為空。DB db = mg.getDB(dataBaseName);

注意:mongodb區(qū)分大小寫,程序中一定要注意

2.mongodb的db安全認證

//安全認證java代碼 返回true表示通過,false表示沒通過不能進行操作db.authenticate("userName", "password".toCharArray());if(db.authenticate("admin", "123".toCharArray())){  System.out.println("連接mongodb成功...");} else{  System.out.println("連接mongodb失敗...");}

Java對mongodb的collection進行crud操作

1.得到mongodb中的db的collection(表)

//參數(shù)tableName相當于關系數(shù)據(jù)庫里的表名,//若mongodb中沒有該tableName,默認會創(chuàng)建該tableName,為空DBCollection users = db.getCollection(tableName);//列出庫的集合列表,相對于表對象Set<String> colls = db.getCollectionNames();for(String s : colls){}// 獲取單個集合DBCollection con = db.getCollection("users");

2.mongodb中的db的collection自增長主鍵

  Mongodb中也像傳統(tǒng)的關系數(shù)據(jù)庫里表一樣,有主鍵(_id)概念,用來唯一標識他們。當用戶往collection中插入一條新記錄的時候,如果沒有指定_id屬性,那么mongodb會自動生成一個ObjectId類型的值,保存為_id的值。

  _id的值可以為任何類型,除了數(shù)組,在實際應用中,鼓勵用戶自己定義_id值,但是要保證他的唯一性。

  傳統(tǒng)的數(shù)據(jù)庫中,通常用一個遞增的序列來提供主鍵,在Mongodb中用ObjectId來代替,我們可以通過如下的方法來得到主鍵。

public class Tools {/** * 實現(xiàn)mongodb主鍵自增長的功能 * @param users * @param tableName * @return */public static long getNext(DBCollection users,String tableName){long incId = 0;try { DBObject ret = users.findAndModify( new BasicDBObject("_id", tableName), null, null, false, new BasicDBObject("$inc", new BasicDBObject("next", 1)), true, true); incId = Long.valueOf(ret.get("next").toString());} catch (Exception e) { e.printStackTrace();} return incId;}}

3.java對collection進行插入操作

DB db = m.getDB("testdb");DBCollection con = db.getCollection("users");//普通添加BasicDBObject doc = new BasicDBObject();doc.put("name", "MongoDB");doc.put("type", "database");doc.put("count", 1);BasicDBObject info = new BasicDBObject();info.put("x", 203);info.put("y", 102);doc.put("info", info);con.insert(doc); //插入對象//特殊添加// 添加多個特殊數(shù)據(jù)(模式自由)for(int i = 1; i <=20; i++){con.insert(new BasicDBObject().append("i", i));}DBObject user_json = (DBObject)JSON.parse("{'user':[{'name':'AAA', 'age':'18'},{'name':'BBB', 'age':'19'}]}");con.insert(user_json);//添加JAVA對象// 添加java對象,對象要序列化Serializable接口UserInfo userinfo = new UserInfo("用戶甲AA", 1);User user = new User(1, "123", userinfo);ByteArrayOutputStream os = new ByteArrayOutputStream();ObjectOutputStream out = new ObjectOutputStream(os); out.writeObject(user);os.close(); out.close();con.insert(MonGoUtil.insertObject("user_info",os.toByteArray()));List<UserInfo> list = new ArrayList<UserInfo>();list.add(new UserInfo("List1", 1));list.add(new UserInfo("List2", 2));list.add(new UserInfo("List3", 3));ByteArrayOutputStream os = new ByteArrayOutputStream();ObjectOutputStream out = new ObjectOutputStream(os); out.writeObject(list);os.close(); out.close();con.insert(MonGoUtil.insertObject("lists",os.toByteArray()));

4.java對collection的查詢操作

/** 輸出獲取到的文檔 **/public static void showDBCursor(DBCursor cur){ while(cur.hasNext()){ System.out.println(cur.next()); } System.out.println();}

 高級查詢

//查詢_id為30000 返回cust_Id的值 ,mongodb查詢都會返回主鍵的值System.out.println(users.findOne(new BasicDBObject("_id",30000),new BasicDBObject("cust_Id",true)));findAndRemove() 查詢_id=30000的數(shù)據(jù),并且刪除users.findAndRemove(new BasicDBObject("_id", 30000));findAndModify介紹users.findAndModify(    new BasicDBObject("_id", 28), //查詢_id=28的數(shù)據(jù)    new BasicDBObject("cust_Id", true), //查詢cust_Id屬性    new BasicDBObject("notice_Id", true), //按照notice_Id排序    false, //查詢到的記錄是否刪除,true表示刪除    new BasicDBObject("province_Id", "100"), //將province_id的值改為100    true, //是否返回新記錄 true返回,false不返回    true //如果沒有查詢到該數(shù)據(jù)是否插collection true入庫,false不入));

查詢所有數(shù)據(jù)

//列出所有文檔BasicDBObject query = new BasicDBObject();System.out.println("列出"+ con.getName() +"集合(表)的所有文檔...");showDBCursor(con.find());

查詢JAVA對象

String key = "user_info";BasicDBObject query = new BasicDBObject();query.put(key, new BasicDBObject("$exists", true));byte[] b = (byte[])con.findOne(query).get(key);InputStream inputStream = new ByteArrayInputStream(b);ObjectInputStream in = new ObjectInputStream(inputStream); User users = (User) in.readObject();System.out.println("用戶對象_json:" + JSONArray.fromObject(users));

 單一條件查詢(數(shù)字)

BasicDBObject query = new BasicDBObject();query.put("i", 11);showDBCursor(con.find(query));

 單一條件查詢(字符串)

BasicDBObject query = new BasicDBObject();query.put("name", "MongoDB");showDBCursor(con.find(query));

 $ne非等于查詢

BasicDBObject query = new BasicDBObject();query.put("name", new BasicDBObject("$ne", "MongoDB"));showDBCursor(con.find(query));

 根據(jù)列名查詢

System.out.println("查詢有'type'字段的數(shù)據(jù)..."); // false表示沒有BasicDBObject query = new BasicDBObject();query.put("type", new BasicDBObject("$exists", true)); // falseshowDBCursor(con.find(query));

 單字段and查詢

System.out.println("單字段and條件的使用,i>=2 and i<5 ,i:[2,5)...");BasicDBObject query = new BasicDBObject();query.put("i", new BasicDBObject("$gte", 2).append("$lt", 5));showDBCursor(con.find(query));

 多字段and查詢

BasicDBObject query = new BasicDBObject();();query.put("name", "MongoDB");query.put("type", "database");System.out.println(con.findOne(query));showDBCursor(con.find(query));

 單字段or查詢

System.out.println("單字段or條件的使用,i<2 or i>=18...");BasicDBList values = new BasicDBList(); values.add(new BasicDBObject("i", new BasicDBObject("$gte", 18))); values.add(new BasicDBObject("i", new BasicDBObject("$lt", 2)));BasicDBObject query = new BasicDBObject();();query.put("$or", values);showDBCursor(con.find(query));

多字段or查詢

// "多字段or條件的使用,name:'MongoDB' or x:'203'..."BasicDBList values = new BasicDBList(); ();values.add(new BasicDBObject("name", "MongoDB")); values.add(new BasicDBObject("x", 203));BasicDBObject query = new BasicDBObject();();query.put("$or", values);showDBCursor(con.find(query));

$in 查詢

System.out.println("in條件的使用$in...");BasicDBList values = new BasicDBList(); ();for (int i = 1; i <=10; i++) { values.add(i);}BasicDBObject query = new BasicDBObject();();query.put("i", new BasicDBObject("$in", values));showDBCursor(con.find(query));

Order By 排序查詢

System.out.println("排序[1=asc,-1=desc]...");showDBCursor(con.find(query).sort(new BasicDBObject("i", -1)));

分頁查詢

// "分頁查詢的使用,總數(shù)據(jù)量:"+con.find(query).count()con.find(query).limit(1); // 只取第1條數(shù)據(jù)con.find(query).skip(1).limit(1); // 從1開始取1條數(shù)據(jù),下標從0開始con.find(query).sort(new BasicDBObject("i", -1)).skip(0).limit(5); // DESC后取5條數(shù)據(jù)//findAndRemove()方法,刪除查詢到的數(shù)據(jù),刪除后的結果集con.findAndRemove(new BasicDBObject("i", 1));showDBCursor(con.find(query));con.findAndRemove(new BasicDBObject("i", new BasicDBObject("$in",  values))); //【注意:多個數(shù)值無效】showDBCursor(con.find(query));

 (not)  OR  (not in)查詢

System.out.println("not,not in條件的使用$not");BasicDBObject query = new BasicDBObject();();query.put("i", new BasicDBObject("$not", new BasicDBObject("$in", values)));showDBCursor(con.find(query));

 Like模糊查詢

System.out.println("like查詢的使用...");BasicDBObject query = new BasicDBObject();();query.put("type", MonGoUtil.getLikeStr("a"));showDBCursor(con.find(query));

 根據(jù)字段類型查詢

System.out.println("根據(jù)數(shù)據(jù)類型查詢,字符類型...");BasicDBObject query = new BasicDBObject();();query.put("name", new BasicDBObject("$type", 2)); //字節(jié)showDBCursor(con.find(query));System.out.println("根據(jù)數(shù)據(jù)類型查詢,整型...");BasicDBObject query = new BasicDBObject();();query.put("i", new BasicDBObject("$type", 16));showDBCursor(con.find(query));

  返回查詢的部分字段

//"查詢數(shù)據(jù)的部分字段,1表示只返回本字段,0表示返回除此字段之外的字段"con.find(new BasicDBObject("name", MonGoUtil.getLikeStr("b")), new BasicDBObject("name", 1));

5.java對collection的更新操作

//查詢id為300的記錄,將cust_Id的值更新為6533615,一定要注意大小寫,以及數(shù)據(jù)//類型,返回值為int表示所影響的記錄條數(shù)//可以用users.findOne(new BasicDBObject("_id",300));查看下,會發(fā)現(xiàn)這條記錄//只返回兩個字段了,分別為_id,cust_Id,別的字段都刪除了。users.update(new BasicDBObject("_id",300), new BasicDBObject ("cust_Id","6533615")).getN();// 參數(shù)3表示數(shù)據(jù)庫不存在是否添加(默認false),參數(shù)4表示是否多條修改(false只修改1條)con.update(new BasicDBObject("name", "MongoDB"),new BasicDBObject("$set", new BasicDBObject("type", "修改后的type"))).getN();con.update(new BasicDBObject("name", "MongoDBs"),new BasicDBObject("$set", new BasicDBObject("type", "修改后的type")), true, true).getN();

6.java對collection的刪除操作

/移除cust_Id為6533615的數(shù)據(jù)。注意 用remove方法不釋放磁盤空間,//mongodb只在collection中做了標志,沒有正在刪除。users.remove(new BasicDBObject("cust_Id","6533615")).getN();//移除id>=1的數(shù)據(jù)users.remove(newBasicDBObject("_id",new BasicDBObject("$gte",1))).getN();//移除整個collection,drop也不釋放磁盤空間users.drop();// 根據(jù)條件刪除文檔(數(shù)據(jù))BasicDBList rls = new BasicDBList();for (int i = 11; i <= 20; i++) { rls.add(i);}query.put("i", new BasicDBObject("$in", rls));con.remove(query);

7.讀取mongodb中Binary Data類型數(shù)據(jù)

 Binary binary = (Binary) doc.get("Data"); byte[] data=binary.getData();

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产网站免费看| 国产福利免费观看| 亚洲欧美小说国产图片| 国产特级嫩嫩嫩bbb| 国产性色视频| 99爱视频在线观看| 二人午夜免费观看在线视频| 国产专区在线| 国产鲁鲁视频在线观看免费| 国产午夜视频| 精品国产高清a毛片无毒不卡| 在线国产三级| av中文资源在线| 中文字幕一区二区三区免费视频| 国产精品入口免费麻豆| av在线播放国产| 国产精品自产拍在线网站| 国产精品18久久久久网站| gogo高清在线播放免费| 中文字幕一区二区三区免费视频| av一级在线| 国产欧美一区二区三区小说| 日本黄在线观看| 国产变态拳头交视频一区二区 | 中文字幕不卡| 精品国产免费第一区二区| 久久久久久五月天久久久久久久久| 国产精品福利视频一区二区三区| 免费高清视频日韩| 日本在线视频www鲁啊鲁| 国产精品日日爱| 最近最好的中文字幕2019免费| 免费99热在线观看| 日本一二三区视频免费高清| 国产对白叫床清晰在线播放| 99热最新网址| 尤物网站在线| 国产蜜臀av在线播放| 不卡av免费观看| 欧美日韩性视频一区二区三区| 国产精品偷乱一区二区三区 | 免费99热在线观看| 亚洲男人的天堂成人| 国产成人天天5g影院| 中文字幕亚洲精品视频| 午夜伦全在线观看| 天堂在线一二区| 国产免费福利网站| 丁香花高清视频完整版在线观看| 日本福利在线观看| 爱福利在线视频| 国产在线激情视频| 国产网站在线免费观看| 国产无套粉嫩白浆在线2022年 | 国产亚av手机在线观看| 国产一级性片| 精品176二区| 欧美日韩**字幕一区| 男女羞羞视频在线观看| 国产在线资源| 国产精品186在线观看在线播放| 精品成人免费自拍视频| 欧美黑人乱大交ⅹxxxxx| 久久久久久久久亚洲精品| 国产九色视频| 国产精品视频一区麻豆| 伊人中文在线| 国产理论电影在线| 精品全国在线一区二区| 免费男女羞羞的视频网站中文字幕| 麻豆电影传媒二区| 国产三级视频| 美女av在线播放| 国产日本在线观看| 日本黄在线观看| 中文字幕日本在线观看| 欧美日韩在线视频免费观看| 国产视频97| 超碰在线人人| 四虎一区二区三区| 国产精品入口麻豆免费观看| 麻豆国产视频| 亚洲欧美精品日韩欧美| 国产黄色片大全| 午夜国产福利在线| 久热国产在线| 日本国产在线| gogogo影视剧免费观看在线观看| 国产精品伦理一区二区三区| 国产麻豆视频免费观看| 黄色国产在线| 久久精品免视着国产成人| 午夜小视频在线| 亚洲第一成人在线视频| 中文av字幕| 国产不卡在线| 国产精品入口麻豆完整版| 国产麻豆视频| 中文字幕有码在线视频| 中文字幕免费中文| 国产调教视频在线观看| 国产人成在线观看| 国产经典三级在线| 国产高清免费av在线| 国产黄色片中文字幕| 国产黄网站在线观看| 国产精品视频福利一区二区| 国产一级片网站| 国产精品入口免费麻豆| 国产福利热线视频| 精品成人免费自拍视频| 精品视频一区二区观看| 在线视频xx| 久热免费视频| 国产免费一级| 国产精品伦理一区二区三区 | 午夜影院在线| 欧美另类在线视频| 91超碰国产在线| 国产一二三区精品视频| 国产福利在线| 四虎影院成人| 午夜视频免费在线观看| 国产精品人人爱一区二区白浆| 中文av字幕| 久热中文字幕| 91中文在线| 青青在线视频| 国产精品久久久久久久牛牛 | 国产激情二区| 人人九九精品| 中文字幕亚洲免费| 午夜性爽视频男人的天堂| 日本久久网站| 国产porn在线| 国产精品一卡二卡三卡| 亚洲精品视频区| 国产三级做爰在线观看| 欧美午夜电影一区二区三区| 国产精品入口麻豆免费| 黄色国产网站在线播放| 在线国产一区二区三区| 国产精品美女视频免费观看软件| 超碰免费在线播放| 天天草天天操| 7777在线| 国产桃色电影在线播放| 可以免费看污视频的网站| 国产精品人人爱一区二区白浆| 狠狠干天天爱| 免费高清视频日韩| 爱福利在线视频| 亚洲精品影院在线| 在线看a视频| 精品伦理一区二区| 中文字幕有码在线视频| 九九色在线观看| 日本免费黄色| 欧美日韩亚洲第一页| 性国产高清在线观看| 在线观看中文字幕一区| 91欧洲在线视精品在亚洲| 国产小视频在线观看| 久久一本精品| 国产中文字幕网| 久久亚洲天堂| 中文字幕人成高视频| 国产小视频在线高清播放| 国产人成在线视频| 999在线视频| 全网国产福利在线播放| 欧美色第一页| √天堂8资源中文在线| 国产一二区在线观看| 国产日产一区二区| 中文字幕av高清| 免费在线播放av| 天堂在线免费观看| 国产小视频在线高清播放| 国产高清视频在线| 人成在线免费视频| 国产一卡2卡3卡四卡网站| 国产福利在线| 欧美日韩一区二区三区视视频 | 最近最好的中文字幕2019免费 | 国产在线观看av| 国产精品99999| 亚洲国产成人综合| 日本中文字幕在线视频| 精品福利视频导航大全| 九九精品视频在线观看九九| 国产黄色高清在线| 久热中文字幕| 国产爆初菊在线观看免费视频网站 | 中文字幕视频在线观看| 中文字幕av网| 国产农村av| 任你操视频在线观看| 国产精品国产三级国产试看| 麻豆精品传媒视频观看|