/** * @param Collection $collection * @param int|string $writeConcern Write concern. Default is 1 (Acknowledged) * @param int $timeout Timeout for write concern. Default is 10000 milliseconds * @param bool $ordered Determins if MongoDB must apply this batch in order (sequentally, * one item at a time) or can rearrange it. Defaults to TRUE * * @limk http://php.net/manual/ru/mongo.writeconcerns.php */ public function __construct(Collection $collection, $writeConcern = null, $timeout = null, $ordered = null) { $this->collection = $collection; $writeOptions = array(); if ($writeConcern) { $writeOptions['w'] = $writeConcern; } if ($timeout && is_numeric($timeout)) { $writeOptions['wtimeout '] = (int) $timeout; } if ($ordered) { $writeOptions['ordered'] = (bool) $ordered; } $className = $this->batchClass; $this->batch = new $className($this->collection->getMongoCollection(), $writeOptions); }
/** * 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); } }