Сокращение карты MongoDB с помощью запроса

У меня есть довольно большая база данных MongoDB, из которой мне нужно извлечь статистику, и я делаю это, запустив запрос Map Reduce.

Теперь проблема в том, что мне нужно сузить запрос, чтобы использовать, например, статус: «черновик» вместо использования всей коллекции.

Это мой код Map/Reduce (я использую Codeigniter): Я попытался выполнить последний шаг в этом запросе, но не могу получить результаты, поэтому думаю, что неправильно добавляю синтаксис: http://cookbook.mongodb.org/patterns/unique_items_map_reduce/.

$map = new MongoCode ("function() {

                day = Date.UTC(this.created_at.getFullYear(), this.created_at.getMonth(), this.created_at.getDate());

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

            }");

            $reduce = new MongoCode ("function( key , values ) {

                var count = 0;

                values.forEach (function(v) {

                    count += v['count'];

                });

                return {count: count};

            }");

            $outer = $this->cimongo->command (array (

                "mapreduce" => "documents",   

                "map"       => $map,   

                "reduce"    => $reduce,  

                "out"       => "stats_results"

            ));


            $map = new MongoCode ("function() {

                emit(this['_id']['day'], {count: 1});

            }");

            $reduce = new MongoCode ("function( key , values ) {

                var count = 0;

                values.forEach (function(v) {

                    count += v['count'];

                });

                return {count: count};

            }");

            $outer = $this->cimongo->command (array (

                "mapreduce" => "stats_results",   

                "map"       => $map,   

                "reduce"    => $reduce,   

                "out"       => "stats_results_unique"

            ));

5
задан Jonathan Clark 10 June 2012 в 13:46
поделиться