AddStoredToStatementRoot::down PHP Метод

down() публичный Метод

Reverse the migrations.
public down ( ) : void
Результат void
    public function down()
    {
        $db = \DB::getMongoDB();
        $statementsCollection = new MongoCollection($db, 'statements');
        $statementsCollection->deleteIndex('stored');
        $statementsCollection->deleteIndex(['lrs_id' => 1, 'stored' => -1]);
        $statementsCollection->update([], ['$unset' => ["stored" => ""]], ['multiple' => true]);
        $statementsCursor = $statementsCollection->find();
        $remaining = $statementsCursor->count();
        print $remaining . ' statements total' . PHP_EOL;
        $maxBatchSize = 10000;
        while ($statementsCursor->hasNext()) {
            $batch = new MongoUpdateBatch($statementsCollection);
            $batchSize = 0;
            $shouldExecute = false;
            while ($batchSize < $maxBatchSize && $statementsCursor->hasNext()) {
                $batchSize++;
                $statement = $statementsCursor->next();
                if (isset($statement['refs'])) {
                    $query = ['q' => ['_id' => $statement['_id']], 'u' => ['$set' => []], 'multi' => false, 'upsert' => false];
                    foreach ($statement['refs'] as $key => $refStatement) {
                        if (isset($refStatement['timestamp']) && $refStatement['timestamp'] instanceof MongoDate) {
                            $query['u']['$set']['refs.' . $key . '.timestamp'] = date('Y-m-d\\TH:i:s.uP', $refStatement['timestamp']->sec);
                        }
                        if (isset($refStatement['stored']) && $refStatement['stored'] instanceof MongoDate) {
                            $query['u']['$set']['refs.' . $key . '.stored'] = date('Y-m-d\\TH:i:s.uP', $refStatement['stored']->sec);
                        }
                    }
                    if (!empty($query['u']['$set'])) {
                        $batch->add((object) $query);
                        $shouldExecute = true;
                    }
                }
            }
            if ($shouldExecute) {
                $batch->execute();
            }
            $remaining -= $batchSize;
            print $remaining . ' remaining' . PHP_EOL;
        }
    }
AddStoredToStatementRoot