首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PHP中访问MongoDB配置文件?

如何在PHP中访问MongoDB配置文件?
EN

Stack Overflow用户
提问于 2013-02-08 08:53:31
回答 2查看 864关注 0票数 1

我正在尝试使用与在MongoDB客户端中相同的查询来访问PHP中的:

代码语言:javascript
复制
$db = $mongo->selectDB('myapp_db');
$array = $db->execute('return db.system.profile.find();');
echo '<pre>' . print_r($array, true);

但我得到的是:

代码语言:javascript
复制
Array
(
    [retval] => Array
        (
            [value] => DBQuery: myapp_db.system.profile -> undefined
        )

    [ok] => 1
)

分析功能已启用,并且在客户端运行良好。

EN

回答 2

Stack Overflow用户

发布于 2013-02-10 09:17:24

Method MongoDB::setProfilingLevel -设置此数据库的性能分析级别

代码语言:javascript
复制
<?php

$dbname = 'students';
$mongo = (new MongoClient());
$db = $mongo->$dbname;

# 0 (off), 1 (queries > 100ms), and 2 (all queries)
$db->setProfilingLevel(2);

# …
# Some queries 
# …

$response = $db->system->profile->find();
foreach ($response as $query) {
    print_r($query);
}

另外:

  • Method MongoDB::getProfilingLevel -获取此数据库的分析级别
  • Method MongoCursor::explain -返回查询的说明,这对于优化和调试

通常很有用

票数 1
EN

Stack Overflow用户

发布于 2013-04-09 05:23:23

当您可以使用JavaScript本身时,不需要在PHP中执行阻塞服务器/数据库的查询:

代码语言:javascript
复制
$mongo = new MongoClient();

// Alternatively, use selectCollection from $mongo->myapp_db
$collection = $mongo->selectCollection('myapp_db', 'system.profile');

foreach ($collection->find() as $document) {
   print_r($document);
}

这可以更有效地使用内存,因为您可以遍历结果,而不是在单个数组中获取整个MongoDB::execute()响应。

此外,原始代码从JavaScript返回光标(一个DBQuery对象)。为了确保与其他驱动程序的兼容性,您应该在返回之前调用cursor.toArray()。在Sammaye对类似问题here的回答中讨论了这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14763979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档