2013-12-07 31 views
0

我一直在環顧四周,搜索互聯網,但我找不到答案。也許我對我的聚合錯了,如果我錯了,請糾正我。mongodb組和計數,在分片環境中的錯誤

假想我有這樣

mongos數據> db.data_analytics.find()排序({_識別符:1})。。限制(1).pretty()

 
{ 
    "title" : "data weather currency", 
    "time" : "Sun Dec 08 2013 04:01:51 GMT+0900 (JST)", 
    "_id" : ObjectId("52a3709f52d744c201000ba6"), 
    "dataAnalytics" : [ 
     { 
      "keyItem" : "currency-yen-php", 
      "currency" : 0.427044, 
      "from" : "JPY", 
      "to" : "PHP", 
      "time" : "Sun Dec 08 2013 04:01:49 GMT+0900 (JST)", 
      "key" : "currency" 
     }, 
     { 
      "keyItem" : "weather-akiruno", 
      "main-temp" : "5.78", 
      "main-temp_min" : "2.78", 
      "main-temp_max" : "7.78", 
      "weather-main" : "Clouds", 
      "weather-description" : "scattered clouds", 
      "time" : "Sun Dec 08 2013 04:01:50 GMT+0900 (JST)", 
      "key" : "weather" 
     }, 
    ], 
    "__v" : 0 
} 

我想組和「$ dataAnalytics.currency」算,但我得到一個錯誤在分片環境這樣

 
mongos> db.data_analytics.aggregate([{$unwind: "$dataAnalytics"}, {$group:{_id:"$dataAnalytics.currency", c: {$sum:1}}}]) 
{ 
    "code" : 16390, 
    "ok" : 0, 
    "errmsg" : "exception: sharded pipeline failed on shard jeanepaul_set_pi_debian_01: { errmsg: \"exception: invalid operator \"$const\"\", code: 15999, ok: 0.0 }" 
} 

我曾試圖複製成功設置這樣做,但在分片環境沒有運氣。可能是什麼問題呢?

我很感激任何幫助,並感謝您提前提供任何幫助!

回答

0

先生,如果你能看到這一點,我解決了這個問題。我爲我的彙總添加了一個$匹配項。這裏是我的結果

 

    mongos> db.data_analytics.aggregate([{$unwind:"$dataAnalytics"},{$match:{"dataAnalytics.key":"currency"}},{$group:{_id:"$dataAnalytics.currency", total: {$sum:1}}}, {$limit:100}]) 
    { 
     "result" : [ 
      { 
       "_id" : 0.428345, 
       "total" : 3 
      }, 
      { 
       "_id" : 0.428517, 
       "total" : 7 
      }, 
      { 
       "_id" : 0.428511, 
       "total" : 63 
      }, 
      { 
       "_id" : 0.42802, 
       "total" : 7 
      } 
     ], 
     "ok" : 1 
    } 

錯誤似乎消失了。再次感謝您的建議!

0

你目前整個dataAnalytics元素分組,您需要添加.currency(或其他個別字段)您_id這樣的:伊恩

db.data_analytics.aggregate([ 
    {$unwind: "$dataAnalytics"}, 
    {$group:{_id:"$dataAnalytics.currency", c: {$sum:1}}}]) 
+0

感謝您的評論,我已經發現了什麼是錯的。它在運行在樹莓派上的碎片中。刪除後,一切工作正常:D – Hokutosei