/** * @param object $document * * @return array * @throws MongoDBException */ private function getShardKeyQuery($document) { if (!$this->class->isSharded()) { return array(); } $shardKey = $this->class->getShardKey(); $keys = array_keys($shardKey['keys']); $data = $this->uow->getDocumentActualData($document); $shardKeyQueryPart = array(); foreach ($keys as $key) { $mapping = $this->class->getFieldMappingByDbFieldName($key); $this->guardMissingShardKey($document, $key, $data); $value = Type::getType($mapping['type'])->convertToDatabaseValue($data[$mapping['fieldName']]); $shardKeyQueryPart[$key] = $value; } return $shardKeyQueryPart; }
/** * @depends testIndexes * @param ClassMetadata $class */ public function testShardKey($class) { $shardKey = $class->getShardKey(); $this->assertTrue(isset($shardKey['keys']['name']), 'Shard key is not mapped'); $this->assertEquals(1, $shardKey['keys']['name'], 'Wrong value for shard key'); $this->assertTrue(isset($shardKey['options']['unique']), 'Shard key option is not mapped'); $this->assertTrue($shardKey['options']['unique'], 'Shard key option has wrong value'); $this->assertTrue(isset($shardKey['options']['numInitialChunks']), 'Shard key option is not mapped'); $this->assertEquals(4096, $shardKey['options']['numInitialChunks'], 'Shard key option has wrong value'); }