mongodb — только запрос «sec» поле из MongoDate с использованием переполнения стека

У меня есть строка, преобразованная в MongoDate с помощью

$dateAdded = new MongoDate(strtotime("$time"));
echo "date ".$dateAdded;

Так что мой $dateAdded теперь выглядит 0.00000000 1482505458,
(Здесь 1482505458 — количество секунд, а 0,00000000 — в микросекундах.)

Теперь в моей коллекции есть документ с sec = 1482442458 и usec = 622000.

 Array ( [_id] => Array ( [addedtime] => MongoDate Object ( [sec] => 1482505458 [usec] => 622000 ) )

Как мне написать запрос, который будет соответствовать только полю секунд?

Обновить:

Вот что я пробовал:

$date = "2016-12-23 15:04:18";
$m = new MongoClient("mongodb://172.29.0.186:27017");
$dateAdded = new MongoDate(strtotime("+330 minutes",strtotime("$time")));
echo " date ".$dateAdded;

$key = array('$and' => array(array('_id.createdby' => "$user"), array('_id.addedtime' => "$dateAdded")));
$collectionCount->find($key);

И это должно соответствовать:

 Array ( [_id.createdby] => 10006161 ) Array ( [_id] => Array ( [addedtime] => MongoDate Object ( [sec] => 1482505458 [usec] => 622000 ) [empname] => Praveen Valecha [createdby] => 10006161 ) )

2

Решение

Это не идеальное решение, но оно работает для меня и должно работать для большинства людей, которые хотят избежать поиска времени с такой же точностью, как в микросекундах.

Вот часть кода, которую я модифицировал по сравнению с той, которая была задана в вопросе:

Я создал переменную со временем на одну минуту больше, чем время, которое я ищу.

$dateAdded = new MongoDate(strtotime("+330 minutes",strtotime("$time")));
echo " dateAdded ".$dateAdded;
$dateFinal = new MongoDate(strtotime("+331 minutes",strtotime("$time")));
echo " dateFinal ".$dateFinal;

Затем я использовал $ gte и $ lt для запроса документов в диапазоне дат, как это было предложено @Sammaye.

$key = array('_id.addedtime' =>  array('$gte' => $dateAdded, '$lt' => $dateFinal));

НОТА : Вы также можете добавить +1 second в $dateFinal вместо добавления дополнительной минуты для достижения более точных результатов.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]