PHP / MongoDB & amp; Сложный запрос

Я довольно новый в Mongodb. Просто прочитайте документацию и поиграйте. Я хотел найти документы со словом «MIA» и значением метки времени между 25 августа 2014 года и 28 августа 2014 года. Я написал так

$var = "MIA";
date_default_timezone_set('UTC');
$from = strtotime('2014-08-25');
$to = strtotime('2014-08-28');;

$var = new MongoRegex("/$var/");
$where1 = array( '$or' => array( array(array('caller' => $var)), array('callee' => $var)));

$where2 = array( '$and' => array( array('timestamp' => array('$gte' => $from )), array('timestamp' => array('$lte'=> $to)) ) );

$where = array( '$and' => $where1, $where2 );

//var_dump($where);

$cursor = $collection->find($where);
var_dump($cursor);

Я получал пустой результат. Можете ли вы дать совет, чтобы это исправить?

Спасибо

РЕДАКТИРОВАТЬ:
Структура коллекции
введите описание изображения здесь

0

Решение

Попробуй это.

$where1 = array(
'$or' => array(
// array(array('caller' => $var)) => often nest one
array('caller' => $var),
array('callee' => $var)
)
);

$where2 = array(
'$and' => array(
array('timestamp' => array('$gte' => $from)),
array('timestamp' => array('$lte'=> $to))
)
);

// $where = array( '$and' => $where1, $where2 ); => `$where2` is not in $and query
$where = array( '$and' => array($where1, $where2));
1

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

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

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