mongodb常用命令日期,分組-創(chuàng)新互聯(lián)

日期分組 db.msds_acce***ecord.group({  keyf : function(doc){  var date = new Date(doc.addtime);  var dateKey = ""+date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate();  return {'day':dateKey}; //33},   initial : {"count":0},   reduce : function Reduce(doc, out) {  if(doc.url){    out.count +=1;  } } });

先插入測試數(shù)據(jù):

創(chuàng)新互聯(lián)于2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站設(shè)計、網(wǎng)站制作網(wǎng)站策劃,項目實(shí)施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元海港做網(wǎng)站,已為上家服務(wù),為海港各地企業(yè)和個人服務(wù),聯(lián)系電話:028-86922220

for(var i=1; i<20; i++){

  var num=i%6;

  db.test.insert({_id:i,name:"user_"+i,age:num});

}

1.普通分組查詢

db.test.group({key:{age:true},initial:{num:0},$reduce:function(doc,prev){

prev.num++

}});

db.runCommand({group:

{

ns:"test",

key:{age:true},

initial:{num:0},

$reduce:function(doc,prev){

prev.num++}

}

});

2.篩選后再分組

db.test.group({key:{age:true},initial:{num:0},$reduce:function(doc,prev){

prev.num++

},

condition:{age:{$gt:2}}

});

db.runCommand({group:

{

ns:"test",

key:{age:true},

initial:{num:0},

$reduce:function(doc,prev){

prev.num++},

condition:{age:{$gt:2}}

}

});

普通的$where查詢:

db.test.find({$where:function(){

return this.age>2;

}

  });

group聯(lián)合$where查詢

db.test.group({key:{age:true},initial:{num:0},$reduce:function(doc,prev){

prev.num++

},

condition:{$where:function(){

return this.age>2;

}

  }

});

3.使用函數(shù)返回值分組

//注意,$keyf指定的函數(shù)一定要返回一個對象

db.test.group({$keyf:function(doc){return {age:doc.age};},initial:{num:0},$reduce:function(doc,prev){

prev.num++

}

});

db.runCommand({group:

{

ns:"test",

$keyf:function(doc){return {age:doc.age};},

initial:{num:0},

$reduce:function(doc,prev){

prev.num++}

}

});

4.使用終結(jié)器

db.test.group({$keyf:function(doc){return {age:doc.age};},initial:{num:0},$reduce:function(doc,prev){

prev.num++

},

finalize: function(doc){ doc.count=doc.num;delete doc.num; }

});

db.runCommand({group:

{

ns:"test",

$keyf:function(doc){return {age:doc.age};},

initial:{num:0},

$reduce:function(doc,prev){

prev.num++},

finalize: function(doc){ doc.count=doc.num;delete doc.num; }

}

});

有關(guān)MapReduce

//首先插入測試數(shù)據(jù)
for(var i=1;i<21;i++)
{
   db.test.insert({_id:i,name:'mm'+i});
}

//進(jìn)行mapreduce
db.runCommand(
{
   mapreduce:'test',
   map:function(){emit(this.name.substr(0,3),this);},
   reduce:function(key,vals){return vals[0];}, //注意:vals是一個Object對象而不是數(shù)組
   out:'wq'
});

注意:
1.mapreduce是根據(jù)map函數(shù)里調(diào)用的emit函數(shù)的第一個參數(shù)來進(jìn)行分組的
2.僅當(dāng)根據(jù)分組鍵分組后一個鍵匹配多個文檔,才會將key和文檔集合交由reduce函數(shù)處理。例如:
db.runCommand(
{
   mapreduce:'test',
   map:function(){emit(this.name.substr(0,3),this);},
   reduce:function(key,vals){return 'wq';},
   out:'wq'
});
執(zhí)行mapreduce命令后,再查看wq表數(shù)據(jù):
db.wq.find()

{ "_id" : "mm1", "value" : "wq" }
{ "_id" : "mm2", "value" : "wq" }
{ "_id" : "mm3", "value" : { "_id" : 3, "name" : "mm3" } }
{ "_id" : "mm4", "value" : { "_id" : 4, "name" : "mm4" } }
{ "_id" : "mm5", "value" : { "_id" : 5, "name" : "mm5" } }
{ "_id" : "mm6", "value" : { "_id" : 6, "name" : "mm6" } }
{ "_id" : "mm7", "value" : { "_id" : 7, "name" : "mm7" } }
{ "_id" : "mm8", "value" : { "_id" : 8, "name" : "mm8" } }
{ "_id" : "mm9", "value" : { "_id" : 9, "name" : "mm9" } }

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

新聞名稱:mongodb常用命令日期,分組-創(chuàng)新互聯(lián)
文章分享:http://muchs.cn/article34/hesse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、App開發(fā)品牌網(wǎng)站設(shè)計、營銷型網(wǎng)站建設(shè)微信小程序、網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管