2013-11-22 68 views
0

我有一個JavaScript文件作爲蒙戈 - 如何訪問由組返回的數據減少

var x = new Mongo('127.0.0.1:27017'); 
var db = x.getDB('user'); 
var r = db.runCommand({"group" : { 
           "ns" : "track_user", "key" : {userId : 1}, "initial" : { 
         count:0 }, cond: { 
             uri: { 
              $regex: 'sm' 
             } }, "$reduce" : function(doc, prev) { 
              } } }  }}); 


while(r.hasNext()){ 
    rs = r.next(); 
}  

我不能夠通過組返回減少的結果運行。 輸出組的減少通過shell中運行是一樣的東西

{ 
    "retval" : [ 
     { 
      "userId" : 0, 
      "created" : "2013-08-08 11:32:15", 
      "uri" : "abc.com", 
      "uri_set" : [ 
       "xyz.com" 
      ] 
     },... 

    ], 
    "count" : 14, 
    "keys" : 6, 
    "ok" : 1 
} 

hasNext是給誤差

Sat Nov 23 00:53:40.351 JavaScript execution failed: TypeError: Object [object Object] has no method 'hasNext' at /var/www/admin/app/controllers/newjavascript1.js:L62 

請儘快幫忙。

回答

0

問題是db.runCommand()沒有返回遊標,所以沒有任何遊標方法可以處理它。您將返回一個嵌入了結果的文檔,因此您將不得不以不同的方式處理數據。

您應該能夠要麼使用mapeach,這取決於你想做什麼:

var mySet = r.retval; 

mySet.forEach(function(doc) { 
    console.log(doc); 
}); 

或者任何你需要做的。