中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

MongoDB學習筆記(ji)~客(ke)戶端命(ming)令行的(de)使用(yong)

回到目錄

當我(wo)們(men)從MongoDB網(wang)站(zhan)下載安裝包之后,它會伴隨有(you)一系列的(de)工具(ju),服務(wu)器程序mongod是我(wo)們(men)耳熟能詳(xiang)的(de)了(le),客戶(hu)端mongo和性能檢(jian)測mongostat我(wo)們(men)可能就沒有(you)用(yong)過了(le),今天主要是介紹一下mongo這個客戶(hu)端命令行工具(ju)的(de)使用(yong)。

測(ce)試環(huan)境(jing):服務端:linux版的mongod 2.6.9

              客戶端:window版的mongo 2.6.9

下面介紹一些常用的命令

1 建立一個(ge)新的鏈接

var x=new Mongo("192.168.2.4:27017")

2 顯示所有數據庫

show dbs

3 指定當前要使用的(de)數據庫

var db=x.getDB("background")

4 得到(dao)當前數據庫的(de)名稱

db.getName()

5 得(de)到數據庫(ku)的所有集合

db.getCollectionNames()

6 得到數據庫中集合的(de)詳細信息

db.getCollectionInfos()

7 得到指定的集合

db.getCollection("background")

8 得(de)到集合中元素(su)的數(shu)量

db.getCollection("background").count()

9 得(de)到服務器(qi)相關信息(xi)

db.hostInfo()

10 得到當前Mongo服務器的連(lian)接(jie)信(xin)息

db.getMongo()

11 為排序和查(cha)詢的字段添加索引

了解(jie)數(shu)據庫的(de)朋友(you)對索引應該(gai)不會(hui)陌生吧,當數(shu)據量比較小(xiao)時,它起不到什么(me)作用,當數(shu)據量大時500W以上,你(ni)的(de)字段就需(xu)要加索引了,性能提升相當的(de)明(ming)顯(xian),如(ru)果你(ni)不加,那你(ni)就等著(zhu)曇花開吧,呵呵!

db.TableName.ensureIndex({FieldName:1})//1為升(sheng)序,-1為降序
db.TableName.getIndexes()

12 刪除索引

db.TableName.dropIndex({"LoginName":1})

13 查看數(shu)據表的狀(zhuang)態(tai),同(tong)步顯示分片的狀(zhuang)態(tai)和(he)每(mei)個片被命中的數(shu)量

db.WebManageUsers.stats()

14 查看數據庫的(de)狀態(tai),它會把相關分片的(de)信息顯示出來

db.stats()

15 在路由服務器查(cha)詢分片(pian)完整的信息

var db=x.getDB("admin");
db.runCommand({listshards:1});//需要在admin數(shu)據庫(ku)下

16 設置數據庫的(de)分片狀態,讓它生效

#指定databaseName分片生效
db.runCommand( { enablesharding :"databaseName"});

17 設置數(shu)據庫下的數(shu)據表(Collection)分片狀(zhuang)態,讓它(ta)生效(xiao)

#指(zhi)定數據庫里需要分(fen)片的集合和片鍵
db.runCommand( { shardcollection : "databaseName.tableName",key : {_id: 1} } )

18 對數據表進行分組

db.tableName.aggregate([{ "$group" : { "_id" : "$DepartmentID", "userCount" : { "$sum" : 1 } } }])

19 分組第(di)二種方(fang)法group強大命令(ling)

db.M_Partner_Footprints.group({
    key: function (doc) { PartnerInfoID: true },//分組的key
    cond: { PartnerInfoID: 6, Login: { ClientType: 0 } },//條件過濾
    initial: { "count": 0 },
    reduce: function (doc, out) {//聚(ju)合方式
        out.count += 1;
    },
    finalize: function (out) {//結果處(chu)理(li)
        return out;
    }
});

20 group對多個(ge)字段進行分組,使用(yong)keyf函數來實現

db.M_User_Footprints.group({
    keyf: function (doc) { return { UserInfoID: doc.UserInfoID, TeacherID: doc.TeacherID } },
    cond: { UserInfoID: 6, Type: 6 },
    initial: { "count": 0 },
    reduce: function (doc, out) {
        out.count += 1;
    },
    finalize: function (out) {
        return out;
    }
});

22 使用aggregate進行聚合操(cao)作

db.M_User_Footprints.aggregate([{ $group: { _id: "$UserInfoID", num_tutorial: { $sum: 1 } } }])

23 管(guan)道,MongoDB的聚合管(guan)道將MongoDB文檔在一個管(guan)道處(chu)理完畢后將結果傳遞給(gei)下一個管(guan)道處(chu)理。管(guan)道操作是(shi)可(ke)以重(zhong)復的。

一 $project選(xuan)擇指定的列,_id被默認選(xuan)中

db.M_User_Footprints.aggregate(
    {
        $project: {
            UserInfoID: 1,
            TeacherID: 1,
        }
    }
 );

二 $match選擇某個范(fan)圍的數據(ju),并將結果傳到下(xia)一個管(guan)道中

db.M_User_Footprints.aggregate([
                        { $match: { UserInfoID: { $gt: 1, $lte: 100 } } },
                        { $group: { _id: null, count: { $sum: 1 } } }
]);

各位對索引(yin)一定要引(yin)起(qi)重(zhong)視,因為在(zai)大數據情況下(xia),如果沒有索引(yin),在(zai)進行排序(xu),查詢等(deng)操作時就引(yin)發全表掃描,那代(dai)價是非常大的!

回到目錄

posted @ 2015-04-10 13:40  張占嶺  閱讀(1895)  評論(0)    收藏  舉報