2016-11-23 2 views
0

Добро пожаловатьTokuMX Object [объект Object] не имеет какого-либо метода «hasNext»

я делал агрегацию на машине с Монго 3,0

mongo ${DB_HOST_PORT}/${DATE} ${BASE_PATH}/temp/script.js > "${BASE_PATH}/temp/listofcampaigns.csv" --quiet 

var cursor=db.getCollection('combined_data').aggregate([{"$match":{"src":"sender","customer":"test","name":"ntf_NotificationSent","time":{"$gte":"2016-11-23T00:00:00.000Z","$lt":"2016-11-23T01:00:00.000Z"}}}, 
{"$group":{"_id":{"campaign":"$spec:crm:cmp:campaign:id"},"count":{"$sum":1}}},{"$sort":{"count":-1}}]); 
if (cursor && cursor.hasNext()) { print('campaign, count'); 
while (cursor.hasNext()) { var item = cursor.next(); print('' + item._id.campaign + ', ' + item.count); }} 

И она работает без проблем, но, после того, как я бегу это на машина с установленным TokuMX, у меня есть служебная ошибка:

Wed Nov 23 14:13:06.443 TypeError: Object [object Object] has no method 'hasNext' at (...)/temp/script.js failed to load: (...)/temp/script.js

Может кто-нибудь помочь мне с этим? Или, может быть, у кого-то есть пример того, как запускать такой агрегат на машине с помощью TokuMX?

Результат файл должен выглядеть следующим образом:

campaign, count 
xyz, 5 
yxz, 6 

ответ

0

Это зависит от внутренних изменений API между версией 2.4 и 2.6. Лучшим решением для него является клиент от TokuMX, потому что он совместим с версией MongoDB 2.4 Engine.

В этом случае результат не является объектом. Это массив. Используйте нижеприведенные фрагменты для отладки кода:

// show whole data 
printjson(result); 
// show keys only 
printjson(Object.keys(result));