Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /var/www/bezhaco/data/www/bezha.od.ua/wp-content/plugins/wp-syntax/wp-syntax.php on line 383
Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /var/www/bezhaco/data/www/bezha.od.ua/wp-content/plugins/wp-syntax/wp-syntax.php on line 383
Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /var/www/bezhaco/data/www/bezha.od.ua/wp-content/plugins/wp-syntax/wp-syntax.php on line 383
Прочитать: MongoDB Schema Design
Aggregation Framework
Работает с версией v2.2+
# mongo --version MongoDB shell version: 2.2.1
Устанавливайте MongoDB из официального репозитория
Map/Reduce О сложных вещах простыми словами. Так, как я рассказывал бы это своей бабушке.
Map/Reduce в подкасте Радио-T
MongoDB MapReduce
Обычно в ситуациях где необходимо использовать GROUP BY в SQL, map/reduce правильное решение в MongoDB.
Пример Map/Reduce
# mongo > db.things.insert( { _id : 1, tags : ['dog', 'cat'] } ); > db.things.insert( { _id : 2, tags : ['cat'] } ); > db.things.insert( { _id : 3, tags : ['mouse', 'cat', 'dog'] } ); > db.things.insert( { _id : 4, tags : [] } );
Map function
> m = function(){ ... this.tags.forEach( ... function(z){ ... emit( z , { count : 1 } ); ... } ... ); }; |
Reduce function
> r = function( key , values ){ ... var total = 0; ... for ( var i=0; i<values.length; i++ ) ... total += values[i].count; ... return { count : total }; }; |
Результат
> res = db.things.mapReduce(m, r, { out : "myoutput" } ); > db.myoutput.find() {"_id" : "cat" , "value" : {"count" : 3}} {"_id" : "dog" , "value" : {"count" : 2}} {"_id" : "mouse" , "value" : {"count" : 1}} |