Я занимаюсь разработкой веб-приложения с использованием Codeigniter и MongoDB.Я пытаюсь заставить карту работать меньше.
Я получил файл документа со следующей структурой.Я хотел бы сделать уменьшение карты, чтобы проверить, сколько раз используется каждый тег, и вывести его в коллекцию files.tags.
{
"_id": {
"$id": "4f26f21f09ab66c1030d0000e"
},
"basic": {
"name": "The filename"
},
"tags": [
"lorry",
"house",
"car",
"bicycle"
],
"updated_at": "2012-02-09 11:08:03"
}
Я пробовал эту команду уменьшения карты, но она не учитывает каждого отдельного человека.тег:
$map = new MongoCode ("function() {
emit({tags: this.tags}, {count: 1});
}");
$reduce = new MongoCode ("function( key , values ) {
var count = 0;
values.forEach(function(v) {
count += v['count'];
});
return {count: count};
}");
$this->mongo_db->command (array (
"mapreduce" => "files",
"map" => $map,
"reduce" => $reduce,
"out" => "files.tags"
)
);