2013-02-23 4 views
0

Я новичок в MognoDB. Как я могу проверить, что моя машина поддерживает Map-уменьшить или нет? Код map-reduce работает на другой машине, но не на моей машине.Check Mongodb MapReduce Support

+3

Все серверы MongoDB поддерживают map-reduce. Каким образом это не работает? – JohnnyHK

+0

Спасибо! Это означает, что он встроен в поддержку MapReduce. Я не должен включать это явно. Мой код находится в Yii, используя расширение. Я также не могу вставить его. Но кажется, что доза не заполняет коллекцию, используя «out» –

+0

его просто функции javascript, работающие на оболочке mongo ... –

ответ

0

Map-reduce - это всего лишь процедура, а не какая-либо конкретная услуга или библиотека. Если вы делаете основной запрос о MongoDB как ...

> db.collectionname.find() 

Чем вы можете легко реализовать карту-свертка кода в одной оболочке ...

Позвольте мне объяснить простой пример из MongoDB поваренной книги.

Предположим, что ваши документы данных (в строках sql) выглядят следующим образом.

> db.pageviews.find() 

{ 
"url" : "http://example.com/photos", 
"user_id" : ObjectID('4be1c916e031933119d78b30'), 
"date": "Wed May 05 2010 15:37:58 GMT-0400 (EDT)" 
} 

Это документ с просмотром страницы для любого сайта.

Решение требует группировки просмотров страниц днем, а затем подсчета общего количества посещений пользователей и количества уникальных посещений за этот день.

> map = function() { 
    day = Date.UTC(this.date.getFullYear(), this.date.getMonth(), this.date.getDate()); 

    emit({day: day, user_id: this.user_id}, {count: 1}); 
} 

ваша карта будет работать, как это на консоли ..

> reduce = function(key, values) { 
    var count = 0; 

    values.forEach(function(v) { 
    count += v['count']; 
    }); 

    return {count: count}; 
} 

ваш уменьшить будет работать, как это ...

, а затем

db.pageviews.mapReduce(map, reduce, {out: pageview_results}); 

это вы основной карта сокращения ...

Теперь, когда вы запрашиваете сборку pageview_results, вы получите уменьшенное количество отображаемых документов.

> db.pageview_results.find()