Итак, проблема в том, чтобы получить идентификаторы (или любые другие поля) в одном массиве, например:
[
"someId1",
"someId2",
"someId3",
]
Пытался взять по следующему запросу:
$this->createQueryBuilder()
->select('_id')
->hydrate(false)
->getQuery()
->toArray()
но я взял не то, что хочу, а около этого:
112 => array:1 [
"_id" => 112
]
113 => array:1 [
"_id" => 113
]
114 => array:1 [
"_id" => 114
]
(Использую стратегию INCREMENT). Я пробовал делать это по map, reduce, но понял, что ничего не знаю в этих функциях :). Так может кто-нибудь мне помочь?
P.S: Я знаю, как реализовать это с помощью функций php, например array_keys | array_values
. Но я очень хочу знать, как это сделать с помощью mongoDB, и особенно в ODM с createQueryBuilder.
public function findIds() { return $this->createQueryBuilder('c') ->select('partial c.{id}') ->getQuery() ->getResult(Query::HYDRATE_ARRAY); }
, затем$ids = $this->yourRepository->findIds(); $result = array_column($ids, 'id');
в вашем сервисе. - person BentCoder   schedule 15.03.2017