我搜索了答案但没有任何结果。我需要使用PHP 7.1.6中的MongoDB \ Driver检查我的mongodatbase中是否存在Collection。有谁知道怎么做?感谢。
答案 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在此线程中的回答)。 $manager
是MongoDB\Driver\Manager
类。希望它可以帮助您节省一些时间:)
$command = new Command(['listCollections' => 1, 'filter' => ['name' => 'collection-name']]);
$result = $manager->executeCommand('db-name', $command)->toArray();
if (false == empty($result) { whatever ...}