/**
* Recreates the internal MongoCursor.
*/
public function recreate()
{
$this->mongoCursor = $this->collection->getMongoCollection()->find($this->query, $this->fields);
if ($this->hint !== null) {
$this->mongoCursor->hint($this->hint);
}
if ($this->immortal !== null) {
$this->mongoCursor->immortal($this->immortal);
}
foreach ($this->options as $key => $value) {
$this->mongoCursor->addOption($key, $value);
}
if ($this->batchSize !== null) {
$this->mongoCursor->batchSize($this->batchSize);
}
if ($this->limit !== null) {
$this->mongoCursor->limit($this->limit);
}
if ($this->maxTimeMS !== null) {
$this->mongoCursor->maxTimeMS($this->maxTimeMS);
}
if ($this->skip !== null) {
$this->mongoCursor->skip($this->skip);
}
if ($this->slaveOkay !== null) {
$this->setMongoCursorSlaveOkay($this->slaveOkay);
}
// Set read preferences after slaveOkay, since they may be more specific
if ($this->readPreference !== null) {
if ($this->readPreferenceTags !== null) {
$this->mongoCursor->setReadPreference($this->readPreference, $this->readPreferenceTags);
} else {
$this->mongoCursor->setReadPreference($this->readPreference);
}
}
if ($this->snapshot) {
$this->mongoCursor->snapshot();
}
if ($this->sort !== null) {
$this->mongoCursor->sort($this->sort);
}
if ($this->tailable !== null) {
$this->mongoCursor->tailable($this->tailable);
}
if ($this->timeout !== null) {
$this->mongoCursor->timeout($this->timeout);
}
}