Вопрос группы MongoCollection

#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 оставался действительным.