У меня есть довольно большой MongoDB, из которого мне нужно извлечь статистику, и я делаю эту покупку, выполняя запрос на уменьшение карты.MongoDB map уменьшить с запросом
Проблема теперь, что мне нужно, чтобы сузить запрос, чтобы использовать, например, статус:. «Записан» вместо того, чтобы использовать всю коллекцию
Это мой 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"
));
Что вы имеете в виду "статус использования 'разработан'"? Не хотите ли вы отображать полную таблицу, или это достаточно, только испуская ключи с этим статусом? Я предполагаю, что вы хотите условно испустить результат, основанный на поле статуса. – evnu