2013-02-06 57 views
1

我在做使用mongodb的項目。所以在這裏我寫了獨立的函數來創建數據庫。這是我的代碼不顯示創建的mongodb

  $conn = new \MongoClient('mongodb://example.com:27017', array("connect" => TRUE)); 
      $exist_dbs = $conn->listDBs(); 

      foreach ($exist_dbs["databases"] as $databse) { 
       if ($databse['name'] == $db_name) { 
        $is_exist = true; 
       } 
      } 

      if (!$is_exist) { 
       $db = new \MongoDB($conn, $db_name); 
       $status = true; 
       $msg = 'database successfully created'; 

      } else { 
       $status = false; 
       $msg = 'database already exist'; 
      } 
      $conn->close(); 

但創建數據庫後它沒有顯示。但如果我添加這樣的記錄,

  $conn = new \MongoClient('mongodb://example.com:27017', array("connect" => TRUE)); 
      $exist_dbs = $conn->listDBs(); 

      foreach ($exist_dbs["databases"] as $databse) { 
       if ($databse['name'] == $db_name) { 
        $is_exist = true; 
       } 
      } 

      if (!$is_exist) { 
       $db = new \MongoDB($conn, $db_name); 
       $status = true; 
       $msg = 'database successfully created'; 
       //new code 
       $collection = new \MongoCollection($db, 'users'); 
       $obj = array("name" => "Madawa", "age" => "34"); 
       $collection->insert($obj); 
      } else { 
       $status = false; 
       $msg = 'database already exist'; 
      } 
      $conn->close(); 

它顯示數據庫。請幫助我的原因是什麼?

+0

Crossphire Development下面的答案是正確的。 – acm

+0

@acm ok謝謝你的反饋,實際上我分別編寫了幾個函數來創建數據庫,刪除數據庫,添加明智的集合。所以認爲後創建數據庫我嘗試將收集添加到該數據庫,所以我如何避免上述問題(數據庫不存在) – user2047701

回答

1

當你說

$db = new \MongoDB($conn, $db_name); 

沒有創建一個數據庫,你創建了一個對象,可以訪問數據庫。這並不意味着數據庫確實存在或者它確實存在,只是您現在有一個能夠訪問它的對象。所以你基本上說過:「讓我有一個數據庫對象來處理我的調用,並且我想選擇$ db_name」,但這就是發生的一切。數據庫不存在,直到你把東西放進去或者對它執行一些操作。

+0

確定感謝您的反饋,其實我寫了幾個函數分別創建數據庫,放數據庫,添加像明智的集合。所以想到創建數據庫後,我嘗試將收集添加到該數據庫,所以我如何避免上述問題。 – user2047701