如何使用 Jenssegers Mongodb 获取索引

Posted

技术标签:

【中文标题】如何使用 Jenssegers Mongodb 获取索引【英文标题】:How to get indices using Jenssegers Mongodb 【发布时间】:2021-12-02 06:05:51 【问题描述】:

我需要使用 laravel 在 mongodb 中获取集合的索引,我知道在 mongo compass 中您可以使用返回索引的 $ indexStats,尝试复制如下

DB::connection('mongodb')->collection("audience")->timeout(-1)->raw(function($collection)
    return $collection->aggregate([
        [
           '$indexStats' => new \stdClass()
        ]
    ], ["allowDiskUse" => true]);
);

但是用 dd() 检查结果,结果如下

MongoDB\Driver\Cursor #2009

事实是,我不知道那是什么,如果有人知道我做错了什么或如何获取索引,那将对我有很大帮助

非常感谢您的宝贵时间

【问题讨论】:

【参考方案1】:

我刚刚找到了解决办法,就是要把MongoDB\Driver\Cursor#2009转成数组,那我详细说一下代码是怎么回事

$query = DB::connection('mongodb')->collection("audience")->raw(function($collection)
        return $collection->aggregate([
            [
                '$indexStats' => new \stdClass()
            ]
        ], ["allowDiskUse" => true]);
    );
dd($query->toArray());

如果您需要将其转换为 laravel 集合,我会按照以下方式进行操作

dd(collect(json_decode(\MongoDB\BSON\toJSON(\MongoDB\BSON\fromphp($query->toArray())), true)));

我把它转成json,解码,最后使用collect函数。

我希望它对某人有所帮助。 问候:D

【讨论】:

以上是关于如何使用 Jenssegers Mongodb 获取索引的主要内容,如果未能解决你的问题,请参考以下文章

安装 Jenssegers\Mongodb 时在 laravel 中出现问题

MongoDB 匹配部分文本忽略重音符号(变音符号)

将 mongodb.so 添加到 php.ini 后 XAMPP (Apache) 崩溃

您的要求无法解决为一组可安装的软件包。帮帮我

Laravel 8、Passport 和 MongoDB 集成

新手得到_id返回查询