2013-12-07 2 views
0

Я искал в Интернете и искал в Интернете, но я не мог найти ответа. Возможно, я ошибаюсь в своем агрегации, пожалуйста, поправьте меня, если я ошибаюсь.mongodb group and count, error in sharded environment

якобы у меня есть такие данные

mongos> db.data_analytics.find() сортировки ({_ ID: -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», но я получаю сообщение об ошибке в среде sharded как этот

 
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 }" 
} 

Я попытался сделать это в набор репликации успешно, но не повезло в sharded среде. В чем может быть проблема?

Я ценю любую помощь и благодарю вас за любую помощь заранее!

ответ

0

Сэра Яну, если вы можете увидеть это, я решили проблему. Я добавил $ match к моему агрегату. и вот мой результат

 

    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