Intereting Posts
Должен ли я использовать текстовый файл или базу данных для счетчика посетителей PHP? php iconv translit для удаления акцентов: не работает как исключено? Laravel Migration добавить поле после данных в таблице? Получить URL-адрес уменьшенных изображений изображений в WooCommerce Ошибка анализа: синтаксическая ошибка, неожиданный $ end создать представление, которое получает ранг, имя пользователя и количество записей пользователя zf tool & PHPunit не распознается в include_path Почему я получаю сообщение об ошибке при установке PEAR? Как отсортировать массив в порядке убывания на основе определенного значения $ _SERVER возвращает / htdocs not / public_html Как изменить размер изображения с помощью php? Принуждение загрузки с использованием PHP Дублированный рис в галерее миниатюр в Woocommerce Разделить результаты на 5 столбцов Нужно ли объявлять массив PHP перед добавлением значений с помощью ?

Запрос PHP и MongoDate

Создал коллекцию mongo с использованием PHP-скрипта с подполем, инициализированным MongoDate. Полученное поле в коллекции выглядит следующим образом:

"ts_add" : { "sec" : 1335468966, "usec" : 420000 }, 

Когда я создаю свой запрос в этом поле в PHP, я создаю его следующим образом:

 $val = new MongoDate(strtotime($strDate)); // $strDate = '2012-04-25' ... $aryQuery = array(STRING_COL_NAME => array ('$gte' => $val)); 

И затем я делаю некоторые другие вещи и выполняю запрос с помощью команды find ().

Структура запроса построения в PHP выглядит так, согласно отладчику:

 find(Array ( [ts_add] => Array ( [$gte] => MongoDate Object ( [sec] => 1335337200 [usec] => 0 ) ) ) 

В моих файлах журналов я вижу следующее:

 runQuery called coll.table { ts_add: { $gte: new Date(1335337200000) } } 

Но никаких данных никогда не возвращают …. и я отчасти извращен всеми лишними нулями, но я думаю, что это данные временной отметки по умолчанию или некоторые странные MongoDate-ism …

Если я вручную, из cli, запустите эту команду:

 > db.table.find({ "ts_add.sec": { $gte:1335337200 } }) 

Возвращается полный набор данных (как ожидается).

Попробовал это, затем, от cli, чтобы попытаться имитировать вещь MongoDate:

 > var start = new Date(2012, 3, 10) > db.addons_add.find({ ts_add : { $gte : start } } ) 

Данные не возвращаются.

Если я использую одни и те же входные данные и преобразую их в MongoID, то поиск в поле $ _id выполняется успешно.

Какие-либо предложения? Что мне не хватает? У меня такое чувство, что я стою в трех сантиметрах от дерева, жалуюсь на то, как я не вижу лес …

благодаря!

Solutions Collecting From Web of "Запрос PHP и MongoDate"

mongod печатает все в формате JavaScript, который печатает даты в миллисекундах (из которых происходят все дополнительные 0). Таким образом, запрос для 1335337200 правильно превращается в 1335337200 * 1000 = 1335337200000.

Однако исходный фрагмент документа, который вы вставили, выглядит неправильно. "ts_add" : {"sec" : 1335468966, "usec" : 420000} является JSON, но тип Date не должен выглядеть так, как в JavaScript. Как вы сохраняете даты? Похоже, что они преобразуются в другой тип объекта и затем сохраняются как «общий объект» вместо «тип даты».