Как создать канал JSON из коллекции MongoDB - PullRequest
3 голосов
/ 08 октября 2010

Я создаю CMS для своего клиента, чтобы работать с его фотографиями и продавать их на своем сайте. Для конца CMS, а также для внешнего интерфейса, который будет все AJAX, было бы неплохо получить настройку канала JSON, чтобы я мог просто использовать один и тот же канал для создания новых "страниц" и "представлений" с JS .

Так что этот пример канала будет иметь вид {[name: 'A Photo', description: 'lorem ipsum ...'], [...]}, а затем с помощью jQuery или JS я могу создать таблицу всех его фотографии, страницы и т. д. Как я могу настроить это для себя?

Должен ли я просто создать файл PHP, который получает все данные из MongoDB, помещает их в массив, а не преобразовывать массив в JSON?

Ответы [ 3 ]

9 голосов
/ 08 октября 2010
    $cursor = $this->collection->find($params);
    $return = array();
    $i=0;
    while( $cursor->hasNext() )
    {

        $return[$i] = $cursor->getNext();
        // key() function returns the records '_id'
        $return[$i++]['_id'] = $cursor->key();
    }
    return json_encode($return);

Так я возвращаю JSON из Монго.

1 голос
/ 19 июля 2011

Я сделал это так:

$cursor = $collection->find($params);
if($cursor->hasNext())
{
    return json_encode(iterator_to_array($cursor));
}

Если вам нужны _ids, проверьте этот ответ, чтобы понять, почему вы их не получаете: MongoDB PHP: Как мне получить ObjectId с фидом JSON? (пусто)

0 голосов
/ 29 декабря 2013

Вот что я делаю:

$data = json_decode(json_encode(iterator_to_array($cursor, true)));

таким образом я проверяю, есть ли у меня массив объектов, которые вы можете правильно вызвать:

foreach($data as $doc){
    echo 'title:'.$doc->title.'<br>';   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...