Returns the MongoDB instance for a class.
public getDocumentDatabase ( string $className ) : Doctrine\MongoDB\Database | ||
$className | string | The class name. |
return | Doctrine\MongoDB\Database |
protected function skipTestIfNotSharded($className) { $result = $this->dm->getDocumentDatabase($className)->command(['listCommands' => true]); if (!$result['ok']) { $this->markTestSkipped('Could not check whether server supports sharding'); } if (!array_key_exists('shardCollection', $result['commands'])) { $this->markTestSkipped('Test skipped because server does not support sharding'); } }
public function generate(DocumentManager $dm, $document) { $className = get_class($document); $db = $dm->getDocumentDatabase($className); $query = array('_id' => $document->getEtablissement()->getId()); $newObj = array('$inc' => array('numeroPassageIncrement' => 1)); $command = array(); $command['findandmodify'] = "Etablissement"; $command['query'] = $query; $command['update'] = $newObj; $command['upsert'] = true; $command['new'] = true; $result = $db->command($command); $document->setIdentifiant(sprintf("%s-%s-%05d", $document->getEtablissement()->getIdentifiant(), $document->getDatePrevision()->format('Ymd'), $result['value']['numeroPassageIncrement'])); $id = sprintf("%s-%s", Passage::PREFIX, $document->getIdentifiant()); if ($document->getNumeroArchive()) { return $id; } $this->updateNumeroArchive($db); $command = array(); $command['findandmodify'] = 'doctrine_increment_ids'; $command['query'] = array('_id' => "PassageArchive"); $command['update'] = array('$inc' => array('current_id' => 1)); $command['upsert'] = true; $command['new'] = true; $result = $db->command($command); $document->setNumeroArchive($result['value']['current_id']); return $id; }
public function generate(DocumentManager $dm, $document) { $className = get_class($document); $db = $dm->getDocumentDatabase($className); $query = array('_id' => $document->getSociete()->getId()); $newObj = array('$inc' => array('contratIncrement' => 1)); $command = array(); $command['findandmodify'] = "Societe"; $command['query'] = $query; $command['update'] = $newObj; $command['upsert'] = true; $command['new'] = true; $result = $db->command($command); $document->setIdentifiant(sprintf("%s-%s-%04d", $document->getSociete()->getIdentifiant(), $document->getDateCreation()->format('Ymd'), $result['value']['contratIncrement'])); $id = sprintf("%s-%s", "CONTRAT", $document->getIdentifiant()); if ($document->getNumeroArchive()) { return $id; } $annee = $document->getDateCreation()->format('y'); $command = array(); $command['findandmodify'] = 'doctrine_increment_ids'; $command['query'] = array('_id' => "ContratArchive"); $command['update'] = array('$inc' => array($annee => 1)); $command['upsert'] = true; $command['new'] = true; $result = $db->command($command); $document->setNumeroArchive(sprintf("%s%04d", $annee, $result['value'][$annee])); return $id; }
/** * Create the document database for a mapped class. * * @param string $documentName * @throws \InvalidArgumentException */ public function createDocumentDatabase($documentName) { $class = $this->dm->getClassMetadata($documentName); if ($class->isMappedSuperclass || $class->isEmbeddedDocument) { throw new \InvalidArgumentException('Cannot delete document indexes for mapped super classes or embedded documents.'); } $this->dm->getDocumentDatabase($documentName)->execute("function() { return true; }"); }
/** * @param $documentName * * @return array */ private function runShardCollectionCommand($documentName) { $class = $this->dm->getClassMetadata($documentName); $dbName = $this->dm->getDocumentDatabase($documentName)->getName(); $shardKey = $class->getShardKey(); $adminDb = $this->dm->getConnection()->selectDatabase('admin'); $result = $adminDb->command(array('shardCollection' => $dbName . '.' . $class->getCollection(), 'key' => $shardKey['keys']), $shardKey['options']); return $result; }
public function generate(DocumentManager $dm, $document) { $className = get_class($document); $db = $dm->getDocumentDatabase($className); if ($document->getIdentifiant()) { return "PAIEMENTS-" . $document->getIdentifiant(); } $document->setIdentifiant(sprintf("%s", $document->getDateCreation()->format('Ymd'))); return "PAIEMENTS-" . $document->getIdentifiant(); }
/** * Get Discriminator Values * * @param \Iterator|array $classNames * @return array an array of discriminatorValues (mixed type) * @throws \InvalidArgumentException if the number of found collections > 1 */ private function getDiscriminatorValues($classNames) { $discriminatorValues = array(); $collections = array(); foreach ($classNames as $className) { $class = $this->dm->getClassMetadata($className); $discriminatorValues[] = $class->discriminatorValue; $key = $this->dm->getDocumentDatabase($className)->getName() . '.' . $class->getCollection(); $collections[$key] = $key; } if (count($collections) > 1) { throw new \InvalidArgumentException('Documents involved are not all mapped to the same database collection.'); } return $discriminatorValues; }
public function generate(DocumentManager $dm, $document) { $className = get_class($document); $db = $dm->getDocumentDatabase($className); $query = array('_id' => $document->getSociete()->getId()); $newObj = array('$inc' => array('etablissementIncrement' => 1)); $command = array(); $command['findandmodify'] = "Societe"; $command['query'] = $query; $command['update'] = $newObj; $command['upsert'] = true; $command['new'] = true; $result = $db->command($command); $document->setIdentifiant(sprintf("%s%03d", $document->getSociete()->getIdentifiant(), $result['value']['etablissementIncrement'])); return sprintf("%s-%s", "ETABLISSEMENT", $document->getIdentifiant()); }
/** @inheritDoc */ public function generate(DocumentManager $dm, $document) { $className = get_class($document); $db = $dm->getDocumentDatabase($className); $coll = $dm->getDocumentCollection($className); $query = array('_id' => $coll->getName()); $newObj = array('$inc' => array('current_id' => 1)); $command = array(); $command['findandmodify'] = 'doctrine_increment_ids'; $command['query'] = $query; $command['update'] = $newObj; $command['upsert'] = true; $command['new'] = true; $result = $db->command($command); return $result['value']['current_id']; }
public function generateNumeroFacture(DocumentManager $dm, $document) { if ($document->getNumeroFacture()) { return; } $className = get_class($document); $db = $dm->getDocumentDatabase($className); $annee = $document->getDateFacturation()->format('Y'); $command = array(); $command['findandmodify'] = 'doctrine_increment_ids'; $command['query'] = array('_id' => "FactureArchive"); $command['update'] = array('$inc' => array($annee => 1)); $command['upsert'] = true; $command['new'] = true; $result = $db->command($command); $document->setNumeroFacture(sprintf("%s%04d", $annee, $result['value'][$annee])); }
public function generate(DocumentManager $dm, $document) { $className = get_class($document); $db = $dm->getDocumentDatabase($className); if ($document->getIdentifiant()) { return "SOCIETE-" . $document->getIdentifiant(); } $command = array(); $command['findandmodify'] = 'doctrine_increment_ids'; $command['query'] = array('_id' => "Societe"); $command['update'] = array('$inc' => array('current_id' => 1)); $command['upsert'] = true; $command['new'] = true; $result = $db->command($command); $identifiant = sprintf("%06d", $result['value']['current_id']); $document->setIdentifiant($identifiant); return "SOCIETE-" . $document->getIdentifiant(); }
public function getDocumentDatabase($documentName) { return isset($this->documentDatabases[$documentName]) ? $this->documentDatabases[$documentName] : parent::getDocumentDatabase($documentName); }
/** * {@inheritdoc} */ public function count() { $result = $this->documentManager->getDocumentDatabase($this->productClass)->command(['aggregate' => 'pim_catalog_product', 'pipeline' => [['$project' => ['values' => 1]], ['$unwind' => '$values'], ['$group' => ['_id' => '$values._id']], ['$group' => ['_id' => 'DistinctCount', 'count' => ['$sum' => 1]]]]]); return $result['result'][0]['count']; }