#php #mongodb
#php #mongodb
Вопрос:
<?php
$collection->insert(array("category" => "fruit", "name" => "apple"));
$collection->insert(array("category" => "fruit", "name" => "peach"));
$collection->insert(array("category" => "fruit", "name" => "banana"));
$collection->insert(array("category" => "veggie", "name" => "corn"));
$collection->insert(array("category" => "veggie", "name" => "broccoli"));
$keys = array("category" => 1);
$initial = array("items" => array());
$reduce = "function (obj, prev) { prev.items.push(obj.name); }";
$g = $collection->group($keys, $initial, $reduce);
echo json_encode($g['retval']);
?>
непонятная строка $keys = array("category" => 1);
зачем нужно писать «category» => 1 вместо простого написания «категория»?
Ответ №1:
зачем нужна запись
"category" => 1
вместо простой записи"category"
?
Механизм запросов для MongoDB использовал объекты JSON. Итак, все представляет собой пару ключ-значение. Драйвер PHP представляет пары ключ-значение, используя хэш-таблицы (или словари).
Если вы посмотрите на документацию по агрегации, в ней есть следующий пример:
key: { a:true, b:true }
В PHP это было бы представлено как
$key: array('a' => 1, 'b' => 1)
Я согласен, что 1
кажется ненужным, но это делается для того, чтобы синтаксис JSON оставался действительным.