У меня есть коллекция с объектами, подобными этим:
{
id => ...
[queue] => Array
(
[jobs] => Array
(
[0] => Array
(
[_id] => 308
[completedDate] => 1324649528
)
)
[1] => Array
(
[_id] => 308
[completedDate] => 1324649512
)
)
)
}
Так что в основном у меня есть коллекция с объектами с каждым вложенным (EmbedOne
) документом Queue
.Этот Queue
документ также содержит коллекцию (@EmbedMany
) Job
вложенных документов.
Я хочу запросить документ с завершенным заданием:
db.Page.find({"queue.jobs.completedDate": { $ne : null} }).limit(10);
Я делаюэтот запрос с Doctrine2 ODM (1.0.0beta3)
$query = $this->dm->createQueryBuilder( $modelClass );
$query->field('queue.jobs')->elemMatch( $query->expr()->field('completedDate')->notEqual(null) );
//Or, its the same: $query->field('queue.jobs.completedDate')->notEqual(null);
$query->skip( $page*$perPage )->limit( $perPage );
return $query->getQuery()->execute();
но он ничего не возвращает, я что-то упустил?
Редактировать: это документ очереди:
/**
* @EmbeddedDocument
*/
class Queue {
/** @Boolean */
private $locked = false;
/** @Timestamp */
private $lockedAt;
/** @EmbedMany(targetDocument="Cron\Model\Document\Job") */
private $jobs = array();
//...setters & getters
}