Example #1
0
 /**
  * @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);
 }
Example #2
0
 /**
  * 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);
     }
 }