2016-05-25 54 views
6

W Dokumencie Symfony używam MongoDB jako bazy danych. Muszę mieć listę wszystkich kolekcji w bazie danych.MongoDB :: listCollections nie działa

Myślałem, że metoda ListCollections() poda mi te informacje, jak sugeruje nazwa i dokumentacja. Z tą różnicą, że funkcja ta nie zwraca mi niczego.

Od Symfony PHP ja dzwonię metodę tak:

$this->get('doctrine_mongodb.odm.default_connection')->selectDatabase('database');

To daje mi instancję klasy Doctrine\MongoDB\Database Klasa ta posiada funkcję listCollection() jak nizej:

/** 
* Wrapper method for MongoDB::listCollections(). 
* 
* @see http://php.net/manual/en/mongodb.listcollections.php 
* @return array 
*/ 
public function listCollections() 
{ 
    return $this->mongoDB->listCollections(); 
} 

Ponieważ dokumentacja sugerowałaby, że ta funkcja powinna zwrócić tablicę, która to robi (ale jest pusta, nawet jeśli istnieją kolekcje w mojej bazie danych).

Więc przeniosłem się głębiej i spojrzał na dokumentacji listCollections() wtyczki pecl Mongo który stwierdza:

/** 
* (PECL mongo >= 0.9.0)<br/> 
* Get a list of collections in this database 
* @link http://www.php.net/manual/en/mongodb.listcollections.php 
* @param bool $includeSystemCollections [optional] <p>Include system collections.</p> 
* @return array Returns a list of MongoCollections. 
*/ 
public function listCollections($includeSystemCollections = false) {} 

Jak można by uzyskać wszystkie nazwy odbioru w jednej bazie danych w ciągu Symfony 3.0.6?

Niektóre krytyczne szczegóły:

  • Mongo Wersja: wersja 1.5.5
  • Symfony: 3.0.6
  • MongoDB wersja shell: 3.2.4

Odpowiedz