日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第五章 MongoDb索引优化 5.4

發(fā)布時間:2025/3/17 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第五章 MongoDb索引优化 5.4 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
5、唯一索引 先看看之前創(chuàng)建的,rsc索引: index --------- { "name" : "rsc_1" , "ns" : "ms_basic.schedule" , "key" : { "rsc" : 1}} 在rsc字段上,創(chuàng)建唯一索引: coll.dropIndex(new BasicDBObject("rsc", 1)); coll.ensureIndex(new BasicDBObject("rsc", 1).append("unique", true)); 顯示結(jié)果: index --------- { "name" : "rsc_1_unique_" , "ns" : "ms_basic.schedule" , "key" : { "rsc" : 1 , "unique" : true}} 存在如下rsc=的數(shù)據(jù): { "_id" : { "$oid" : "4c2fe764dd969674cb31a0be"} , "liveStatus" : 0 , "startDate" : "2010-11-12" , "isList" : 0 , "location" : "CAG" , "posttime" : "2010-04-01 15:04:57.0" , "rsc" : "WRM160513" , "noliveTvName" : "" , "endDate" : "2010-11-12" , "endTime" : "09:30" , "isGold" : 0 , "version" : 0 , "startTime" : "09:30" , "disciplineName" : "摔跤" , "event" : "160" , "gender" : "M" , "isMedal" : 0 , "discipline" : "WR" , "venueId" : "CAG" , "phaseName" : "資格賽" , "isRecommend" : 0 , "isData" : 0 , "eventUnitType" : "HATH" , "chatroomStatus" : 0 , "isChina" : 0 , "isStartTime" : 0 , "competitionStatus" : 0 , "unit" : "13" , "tvName" : "男子古典式 - 60公斤級資格賽" , "flag" : 0 , "scheduleName" : "資格賽" , "isEndTime" : 0 , "rid" : "" , "eventName" : "男子古典式 - 60公斤級" , "phase" : "5" , "isResult" : 0} 往表data中插入一條記錄。 System.out.println("-----------華麗分隔線---------------");??? ??? Schedule schedule = new Schedule(); ??? schedule.setRsc("WRM160513"); ??? schedule.setScheduleName("重復值"); ??? BasicDBObject val = new BasicDBObject(); ??? val.put("rsc","WRM160513"); ??? val.put("scheuleName","kaokao"); coll.insert(val); 沒有報錯,查詢結(jié)果: { "_id" : { "$oid" : "4c2fe764dd969674cb31a0be"} , "liveStatus" : 0 , "startDate" : "2010-11-12" , "isList" : 0 , "location" : "CAG" , "posttime" : "2010-04-01 15:04:57.0" , "rsc" : "WRM160513" , "noliveTvName" : "" , "endDate" : "2010-11-12" , "endTime" : "09:30" , "isGold" : 0 , "version" : 0 , "startTime" : "09:30" , "disciplineName" : "摔跤" , "event" : "160" , "gender" : "M" , "isMedal" : 0 , "discipline" : "WR" , "venueId" : "CAG" , "phaseName" : "資格賽" , "isRecommend" : 0 , "isData" : 0 , "eventUnitType" : "HATH" , "chatroomStatus" : 0 , "isChina" : 0 , "isStartTime" : 0 , "competitionStatus" : 0 , "unit" : "13" , "tvName" : "男子古典式 - 60公斤級資格賽" , "flag" : 0 , "scheduleName" : "資格賽" , "isEndTime" : 0 , "rid" : "" , "eventName" : "男子古典式 - 60公斤級" , "phase" : "5" , "isResult" : 0} 注意:java應用中,有個問題,如果數(shù)據(jù)已經(jīng)重復了,那么使用: coll.ensureIndex(new BasicDBObject("rsc", 1).append("unique", true)); 是沒有錯誤提示的,此時繼續(xù)執(zhí)行插入操作,是成功的。 { "_id" : { "$oid" : "4c2fe764dd969674cb31a0be"} , "liveStatus" : 0 , "startDate" : "2010-11-12" , "isList" : 0 , "location" : "CAG" , "posttime" : "2010-04-01 15:04:57.0" , "rsc" : "WRM160513" , "noliveTvName" : "" , "endDate" : "2010-11-12" , "endTime" : "09:30" , "isGold" : 0 , "version" : 0 , "startTime" : "09:30" , "disciplineName" : "摔跤" , "event" : "160" , "gender" : "M" , "isMedal" : 0 , "discipline" : "WR" , "venueId" : "CAG" , "phaseName" : "資格賽" , "isRecommend" : 0 , "isData" : 0 , "eventUnitType" : "HATH" , "chatroomStatus" : 0 , "isChina" : 0 , "isStartTime" : 0 , "competitionStatus" : 0 , "unit" : "13" , "tvName" : "男子古典式 - 60公斤級資格賽" , "flag" : 0 , "scheduleName" : "資格賽" , "isEndTime" : 0 , "rid" : "" , "eventName" : "男子古典式 - 60公斤級" , "phase" : "5" , "isResult" : 0} { "_id" : { "$oid" : "4c3334ea76c7eebe35fb1f81"} , "rsc" : "WRM160513" , "scheduleName" : "kaokao"} java中,生成索引結(jié)果: > db.schedule.getIndexes(); [ ??????? { ??????????????? "name" : "_id_", ??????????????? "ns" : "ms_basic.schedule", ??????????????? "key" : { ??????????????????????? "_id" : 1 ??????????????? } ??????? }, ??????? { ??????????????? "name" : "rsc_1_unique_", ??????????????? "ns" : "ms_basic.schedule", ??????????????? "key" : { ??????????????????????? "rsc" : 1, ??????????????????????? "unique" : true ??????????????? } ??????? } ] 命令行結(jié)果: > db.schedule.ensureIndex({rsc:1},{unique: true}); > db.schedule.getIndexes(); [ ??????? { ??????????????? "name" : "_id_", ??????????????? "ns" : "ms_basic.schedule", ??????????????? "key" : { ??????????????????????? "_id" : 1 ??????????????? } ??????? }, ??????? { ??????????????? "_id" : ObjectId("4c3335de22090000000065d5"), ??????????????? "ns" : "ms_basic.schedule", ??????????????? "key" : { ??????????????????????? "rsc" : 1 ??????????????? }, ??????????????? "name" : "rsc_1", ??????????????? "unique" : true ??????? } ] 后來檢查發(fā)現(xiàn): 應該使用:coll.ensureIndex(new BasicDBObject("rsc", 1),"rsc",true); 而不是:coll.ensureIndex(new BasicDBObject("rsc", 1).append("unique", true)); 這種方式相當于創(chuàng)建了組合索引:rsc_unique,是錯誤的 認真看看API文檔說明即可發(fā)現(xiàn)。

總結(jié)

以上是生活随笔為你收集整理的第五章 MongoDb索引优化 5.4的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。