使用PHP 7.1.6中的MongoDB \ Driver检查mongodb中是否存在集合

时间:2017-11-07 15:03:54

标签: php mongodb

我搜索了答案但没有任何结果。我需要使用PHP 7.1.6中的MongoDB \ Driver检查我的mongodatbase中是否存在Collection。有谁知道怎么做?感谢。

5 个答案:

答案 0 :(得分:2)

使用db.getCollectionNames()然后测试您使用indexOf()搜索的集合的存在,例如

 idx = db.getCollectionNames().indexOf("myColl");

如果idx = -1,则myColl不存在。 perl中的equiv是

my @collections = $database->collection_names;

然后您可以使用smartmatch或grep或任何您喜欢的内容来扫描集合列表。

答案 1 :(得分:0)

首先在这里创建你的mongo对象 $ mongodb_object 那么

Z

collections变量包含所有集合名称作为数组 返回数组示例如下所示

$collections = $mongodb_object->getCollectionNames();

答案 2 :(得分:0)

您可以使用body .ui-dialog { overflow-y: auto !important; max-height: 300px; } body.ui-autocomplete-panel{ position: relative; z-index: 9998!important; } 只是记住它返回一个对象而不是一个数组。 在下面的代码中,$ collectionNames是仅包含名称的数组。

listCollections()

然后像这样检查它:

$collections = $database->listCollections();
$collectionNames = [];
foreach ($collections as $collection) {
  $collectionNames[] = $collection->getName();
}

答案 3 :(得分:0)

我已经使用此方法来验证是否存在必须通过名称的集合,如果不存在则将返回0,如果存在则返回1

公共函数verifyCollection($ name){

  $bd = $this->conexion->mongo(); 
  $data = $bd->listCollections([
   'filter' => [
       'name' => $name,
    ], 
 ]);

$exist = 0;
  foreach ($data as $collectionInfo) {
    $exist = 1;
   }

    return $exist;

}

答案 4 :(得分:0)

这对我有用。基本上,您使用listCollections()函数,但是要弄清楚如何在php-extension中正确使用它并不容易(感谢@ John56在此线程中的回答)。 $managerMongoDB\Driver\Manager类。希望它可以帮助您节省一些时间:)

$command = new Command(['listCollections' => 1, 'filter' => ['name' => 'collection-name']]);
$result = $manager->executeCommand('db-name', $command)->toArray();
if (false == empty($result) { whatever ...}