/**
  * @param string $databaseName
  * @return bool
  */
 public static function hasDB($databaseName)
 {
     $databases = static::$_mongo->listDBs();
     $result = array_filter($databases['databases'], function ($item) use($databaseName) {
         return $item['name'] == $databaseName;
     });
     return count($result) != 0;
 }
Beispiel #2
0
 /**
  * Returns a list of databases.
  *
  * @param boolean $detailed return detailed information
  *
  * @return array array containing database name or info arrays
  */
 public function listDatabases($detailed = false)
 {
     $result = $this->connection->listDBs();
     if ($detailed) {
         return $result;
     }
     return array_map(function ($database) {
         return $database['name'];
     }, $result['databases']);
 }
 /**
  * Show the application welcome screen to the user.
  *
  * @return Response
  */
 public function index()
 {
     try {
         $mongo = new Mongo();
         //create a connection to MongoDB
         $databases = $mongo->listDBs();
         //List all databases
         echo '<pre>';
         print_r($databases);
         $mongo->close();
     } catch (MongoConnectionException $e) {
         //handle connection error
         die($e->getMessage());
     }
     return view('welcome');
 }
Beispiel #4
0
 /**
  * List databases on the server
  *
  * @return array
  */
 public function listDbs()
 {
     $dbs = $this->_mongo->listDBs();
     if (!$dbs["ok"]) {
         $user = MUser::userInSession();
         $dbs = array("databases" => array(), "totalSize" => 0, "ok" => 1);
         foreach ($user->dbs() as $db) {
             $dbs["databases"][] = array("name" => $db, "empty" => false, "sizeOnDisk" => 0);
         }
     }
     //@todo: should we show user input databases only?
     $onlyDbs = $this->uiOnlyDbs();
     $hideDbs = $this->uiHideDbs();
     foreach ($dbs["databases"] as $index => $database) {
         $name = $database["name"];
         if (!empty($hideDbs) && in_array($name, $hideDbs)) {
             unset($dbs["databases"][$index]);
         }
         if (!empty($onlyDbs) && !in_array($name, $onlyDbs)) {
             unset($dbs["databases"][$index]);
         }
     }
     return $dbs;
 }
<?php

try {
    $mongo = new Mongo($server = 'mongodb://localhost:27017/', $options = array('timeout' => 100));
    //create a connection to MongoDB
    $databases = $mongo->listDBs();
    //List all databases;
    echo '<pre>';
    print_r($databases);
    $mongo->close();
} catch (MongoConnectionException $e) {
    die($e->getMessage());
}
Beispiel #6
0
 /** @proxy */
 public function listDatabases()
 {
     $this->initialize();
     return $this->mongo->listDBs();
 }
 public function testListDBs() {
     $m = new Mongo();
     $dbs = $m->listDBs();
     $this->assertEquals(true, (bool)$dbs['ok'], json_encode($dbs));
     $this->assertTrue(array_key_exists('databases', $dbs));
 }
 protected function createMongoDBConfig($update_from_config_alt)
 {
     require_once "I2CE_MagicDataStorageMongoDB.php";
     $db = MDB2::singleton();
     if (!($db_name = $db->database_name)) {
         I2CE::raiseError("No database to connect to MongoDB");
         return false;
     }
     if (!($db_password = $db->dsn['password'])) {
         I2CE::raiseError("No password to connect to MongoDB");
         return false;
     }
     if (!($db_user = $db->dsn['username'])) {
         I2CE::raiseError("No user to connect to MongoDB");
         return false;
     }
     $conn_string = "mongodb://localhost";
     try {
         $m = new Mongo($conn_string);
     } catch (Exception $e) {
         I2CE::raiseError("Could not connect to mongodb using: " . $conn_string);
         return false;
     }
     if (!is_array($dbs = $m->listDBs()) || !array_key_exists('databases', $dbs) || !is_array($dbs['databases'])) {
         I2CE::raiseError("MongoDB: {$db_name} needs to be created");
         //this is done automatically when we select below
     } else {
         $found = false;
         foreach ($dbs['databases'] as $info) {
             if (!is_array($info) || !array_key_exists('name', $info) || !($info['name'] = $db_name)) {
                 continue;
             }
             $found = true;
         }
         if (!$found) {
             I2CE::raiseError("MongoDB: The database {$db_name} needs to be created:" . print_r($dbs, true));
         }
     }
     $new_coll = false;
     if (!($mdb = $m->selectDB($db_name)) instanceof MongoDB) {
         I2CE::raiseError("Cannont connect to mongo database {$db_name}");
         return false;
     }
     if (!is_array($mcolls = $mdb->listCollections()) || count($mcolls) == 0 || !in_array($db_name . ".config", $mcolls)) {
         I2CE::raiseError("MongoDB: collection {$db_name}.config needs to be created");
         //this is done automatically when we select below
         $new_coll = true;
     }
     if (!($mcoll = $mdb->selectCollection('config')) instanceof MongoCollection) {
         I2CE::raiseError("Cannot connect to config collection of mongo database {$db_name}");
         return false;
     }
     if (!I2CE_MagicDataStorageMongoDB::setupIndices($mcoll)) {
         I2CE::raiseError("Could not setup indices");
         return false;
     }
     $qry = 'SHOW TABLES LIKE "config_alt"';
     $result = $db->query($qry);
     if (I2CE::pearError($result, "Cannot access database")) {
         return false;
     }
     if ($result->numRows() < 1) {
         $update_from_config_alt = false;
     }
     if ($update_from_config_alt && $new_coll) {
         $qry_nodes = "SELECT IF(  LENGTH(p.parent) > 1, concat(p.parent,'/',p.name),IF (LENGTH(p.name) > 1, CONCAT('/',p.name), '')) as path, p.value as value, p.type as type, \nGROUP_CONCAT(c.name SEPARATOR '/') AS children\nfrom config_alt AS p LEFT JOIN\n config_alt c \nON c.parent  =  IF( \n LENGTH(p.parent) > 1,\n  concat(p.parent,'/',p.name),\n IF( LENGTH(p.name) > 1, CONCAT('/',p.name), CONCAT('/',p.name))\n) \nGROUP BY path";
         $res = $db->query($qry_nodes);
         if (PEAR::isError($res)) {
             I2CE::raiseError("Could not query existing config_alt");
             return false;
         }
         I2CE::raiseError("Populating mongodb from config_alt table");
         while ($row = $res->fetchRow(MDB2_FETCHMODE_ASSOC)) {
             if ($row['type'] == '0') {
                 $children = preg_split('/\\//', $row['children'], -1, PREG_SPLIT_NO_EMPTY);
             } else {
                 $children = null;
             }
             $data = array(I2CE_MagicDataStorageMongoDB::PATH => $row['path'], I2CE_MagicDataStorageMongoDB::TYPE => $row['type'], I2CE_MagicDataStorageMongoDB::VALUE => $row['value'], I2CE_MagicDataStorageMongoDB::CHILDREN => $children);
             if (!is_array($r = $mcoll->insert($data, array("safe" => true))) || array_key_exists('err', $r) && $r['err']) {
                 I2CE::raiseError("Could not inset new node:" . print_r($r, true));
                 return false;
             }
         }
     }
     if (!$this->setupMagicDataStorage()) {
         I2CE::raiseError("Could not setup magic data storage");
     }
     return true;
 }
$dbname = post('dbname', 'test');
$ts = post('ts');
$op = post('op');
$ns = post('ns');
$millis = post('millis');
$sub = post('sub');
$options = post('options');
$co = post('co');
$html = '';
$collection = 'system.profile';
$haystack = array("{$dbname}.{$collection}", "{$dbname}.\$cmd", "{$dbname}.system.indexes", "{$dbname}.system.namespaces");
// 判断数据是否存在
$mongo = new Mongo('mongodb://' . $host);
//获取数据库列表
$select_dbstr = '<select name="dbname" id="dbname"><option value="">';
$dbases = $mongo->listDBs();
foreach ($dbases['databases'] as $dbs) {
    $sdbname = $dbs['name'];
    if ($sdbname == $dbname) {
        $isselect = " selected ";
    } else {
        $isselect = "";
    }
    $select_dbstr .= '<option value="' . $sdbname . '" ' . $isselect . '>' . $sdbname . '</option>';
}
$select_dbstr .= '</select>';
if ($_POST['reset_profile']) {
    $profile_size = intval($_POST['profile_size']) > 1000000 ? $_POST['profile_size'] : 1000000;
    $mongo->{$dbname}->setProfilingLevel(0);
    $mongo->{$dbname}->dropCollection($collection);
    $mongo->{$dbname}->command(array("create" => $collection, "capped" => true, "size" => $profile_size));
    }
    ?>

  <h2>Databases</h2>

  <table>
    <thead>
      <tr>
        <th>Name</th>
        <th>Collections</th>
        <th></th>
      </tr>
    </thead>
    <tbody>
      <?php 
    $dbs = $mongo->listDBs();
    ?>
      <?php 
    foreach ($dbs['databases'] as $db) {
        if ($db['name'] === 'local' || $db['name'] === 'admin') {
            continue;
        }
        ?>
        <tr>
          <td><a href="<?php 
        echo $_SERVER['PHP_SELF'] . '?db=' . $db['name'];
        ?>
"><?php 
        echo $db['name'];
        ?>
</a></td>
Beispiel #11
0
 public function index()
 {
     $connection = new Mongo();
     print_r($connection->listDBs());
     //能打印出数据库数组,看看有几个数据库。
 }