Не могли бы вы рассказать мне, можно ли использовать имена нумерованных полей в mongodb, что-то вроде этого: {"1": 'value1', "2": 'value2', " 3 ": 55}. Похоже, что я могу вводить такие данные с помощью командной строки mongodb, но у меня возникают проблемы, когда я пытаюсь записать такие данные с помощью php, получая . Сообщение: имена полей должны быть строковыми.Использование имен числовых полей с помощью драйвера PHP MongoDB
Я нашел об именах коллекций в mongodb здесь http://www.mongodb.org/display/DOCS/Collections, но я не нашел информацию об именах полей. Спасибо.
Я попробовал этот для массивов в PHP:
$elements[1] = 1;
$index = "2";
settype($index, "string");
$elements[$index] = 2;
$elements["3"] = 3;
var_dump($elements);
И это показывает:
array
1 => int 1
2 => int 2
3 => int 3
Ошибка Я говорю о том:
Ошибка Ошибка приложения Exception информация:
Сообщение: Имена полей должны быть строками трассировки стека:
#0 C:\library\Shanty\Mongo\Collection.php(376): MongoCollection->find(Array, Array)
#1 C:\git_reps\mailable\application\models\Subscriber1.php(191): Shanty_Mongo_Collection::all(Array, Array)
#2 C:\git_reps\mailable\application\models\Subscriber1.php(203): Model_Subscriber1::getCursor(Array, Array, Array)
#3 C:\git_reps\mailable\application\controllers\ListsController.php(639): Model_Subscriber1::getPaginator(Array, Array, Array)
#4 C:\library\Zend\Controller\Action.php(513): ListsController->view1Action()
#5 C:\library\Zend\Controller\Dispatcher\Standard.php(295): Zend_Controller_Action->dispatch('view1Action')
#6 C:\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#7 C:\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
#8 C:\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#9 C:\git_reps\mailable\public\index.php(25): Zend_Application->run()
#10 {main}
Request Parameters:
array (
'controller' => 'lists',
'action' => 'view1',
'module' => 'default',
'id' => '52',
)
Это происходит, когда я пытаюсь получить MongoDB cursuro настройки полей что-то вроде «1».
Я пытаюсь использовать библиотеку Шанти, работающую с Zend Framework. Он генерирует исключение в Collection.php, используя on line: $ cursor = static :: getMongoCollection (false) -> find ($ query, $ fields); в методе, который пытается прочитать данные из mongodb. – Oleg
Я заменил: \t $ cursor = static :: getMongoCollection (false) -> find ($ query, $ fields); \t \t с этим в Collection.php библиотеки Shanty: \t \t $ cursor = static :: getMongoCollection (false) -> find ($ query) -> fields ($ fields); И похоже, что он работает с именами полей, состоящими только из числа, например «1». – Oleg
Большое спасибо, Кристина. Кажется, это решает проблему. Возможно, эта ошибка будет исправлена в php-драйвере позже. – Oleg