gpt4 book ai didi

php - 在 PHP 中执行 MongoDB 查找查询

转载 作者:可可西里 更新时间:2023-11-01 09:45:47 26 4
gpt4 key购买 nike

我处于需要能够从 PHP 内部直接运行 mongodb 查询的情况,但在使用 execute() 函数时遇到了问题。

以下代码将正确执行并从数据库返回结果:

$m = new MongoClient();
$db = $m-><dbName>;
print_r($db->execute('db.<collection>.count()'));

但是,如果我用 find() 替换 count(),我会得到以下结果:

Array
(
[retval] => Array
(
[value] => DBQuery: <dbName>.<collection>-> undefined
)

[ok] => 1
)

为什么这些查询之一有效,而另一个失败?我该如何克服这个问题?我考虑过编写一些东西,将 MongoDB 查询转换为 PHP Mongo 库使用所需的数组格式,但我不想做很多工作。

这与此处提出的问题相同:How to access MongoDB profile in PHP? - 但当时没有给出任何答案。

本题:PHP MongoDB execute() locking collection使用带有 find() 的 execute() 方法,他们说它对他们有用,但我不确定如何。

更新:

所以我在 pecl 中更新了 mongo,但这并没有解决任何问题。然而,我也做了一个 YUM 更新,它为 php-pecl-mongo-1.2.12-1.el6.x86_64 提供了一个单独的包更新,将我带到了 1.3.4-1。

现在,$db->execute('db.<collection>.find())返回一些东西......但根本不是我所期望的。而不是返回 MongoCursor对象而不是 Array被返回,虽然它有一个 retval字段,其中没有来自所执行查询的实际信息。它看起来像这样:

Array
(
[retval] => Array
(
[_mongo] => Array
(
[slaveOk] =>
[host] => EMBEDDED
)

[_db] => Array
(
[_mongo] => Array
(
[slaveOk] =>
[host] => EMBEDDED
)

[_name] => test
)

[_collection] => Array
(
[_mongo] => Array
(
[slaveOk] =>
[host] => EMBEDDED
)

[_db] => Array
(
[_mongo] => Array
(
[slaveOk] =>
[host] => EMBEDDED
)

[_name] => test
)

[_shortName] => hits
[_fullName] => test.hits
)

[_ns] => test.hits
[_query] => Array
(
)

[_fields] =>
[_limit] => 0
[_skip] => 0
[_batchSize] => 0
[_options] => 0
[_cursor] =>
[_numReturned] => 0
[_special] =>
)

[ok] => 1
)

如您所见,那里实际上没有数据库中的任何内容:我如何获得我的实际行?

最佳答案

$m = new MongoClient();
$db = $m-><dbName>;
print_r($db->execute('db.<collection>.toArray()'));

假设您的数据库名称是 test,集合名称是 foo。

print_r($m->test->execute('return db.foo.find().toArray()'));

关于php - 在 PHP 中执行 MongoDB 查找查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15552991/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com