php - MongoDB::listCollections 不工作

标签 php mongodb symfony doctrine-orm

在 Symfony Doctrine 中,我使用 MongoDB 作为数据库。我需要一个数据库中所有集合的列表。

我认为方法 ListCollections() 会给我这些名称和文档所暗示的。 除了这个函数根本没有返回任何东西。

我从 Symfony PHP 调用这样的方法:

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

这给了我一个类 Doctrine\MongoDB\Database 的实例 该类具有 listCollection() 函数,如下所述:

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

正如文档所建议的那样,这个函数应该返回一个它所做的数组(但即使我的数据库中有集合,它也是空的)。

所以我更深入地查看了 mongo pecl 插件的 listCollections() 的文档,其中指出:

/**
 * (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) {}

如何在 Symfony 3.0.6 中获取一个数据库中的所有集合名称?

一些关键细节:

  • Mongo 版本:1.5.5
  • Symfony 版本:3.0.6
  • MongoDB shell 版本:3.2.4

最佳答案

Mongo 1.5.5 有一个错误会导致此错误。

https://github.com/mongodb/mongo-php-driver-legacy/blob/1.5.5/db.c

尝试将 mongo 扩展更新到 1.6.14 并重试!

关于php - MongoDB::listCollections 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37438387/

相关文章:

symfony - 为什么 webpack encore 只在 dev 中需要

javascript - 使用 AJAX 从 PHP 函数获取 JSON 数据

mongodb - Azure Cosmos DB 是否不支持 MongoDB/Mongoose 唯一索引?

node.js - 我在设置 MongoDB 在云上运行时遇到一些问题

php - Doctrine2中的多对多关系导致迁移时出现重复错误

jquery - 在 Symfony2 中使用 GenemuFormBundle

php - Laravel Eloquent - 使用数据透视表的 id 作为另一个表中的外键

php - MySQL 使用 REGEXP 或 LIKE 来选择带有数据库别名的表名

java - 教程第 6 部分中出现错误 : JSON Parsing and Android ListView Design

c# - 带投影的 MongoDB 文本搜索