gpt4 book ai didi

php - 为什么 findOne($query) 在集合上工作而 find($query) 不使用 PHP 的 Mongo 驱动程序?

转载 作者:可可西里 更新时间:2023-11-01 09:13:52 24 4
gpt4 key购买 nike

我正在使用 PHP 与 Mongo 对话,在 db.collection 上使用 findOne($query) 它会返回我预期的结果。但是将该命令更改为 find() 不会返回任何内容。

在 shell 中,如果您使用 db.collection.find() 它会返回所有文档。谁能解释为什么即使 findOne() 在使用完全相同的查询时 PHP 驱动程序的 find() 也不会返回结果?

更新:这是代码。

find()(不起作用):

  $db = $connection->selectDB( $database );
$returned_collection = $db->selectCollection( $collection );
$cursor = $returned_collection->find( $query );

);

find() 调试输出:

query: array(1) {
["user_id"]=>
string(13) "4d03d13b71676"
}
1292099894 > mongo_wrapper.class.php > returned_collection: events.votes
db: object(MongoDB)#41 (2) {
["w"]=>
int(1)
["wtimeout"]=>
int(10000)
}
cursor: object(MongoCursor)#43 (0) {
}

findOne()(有效):

  $db = $connection->selectDB( $database );
$returned_collection = $db->selectCollection( $collection );
$cursor = $returned_collection->findOne( $query );

findOne() 调试输出:

query: array(1) {
["user_id"]=>
string(13) "4d03d13b71676"
}
1292099906 > mongo_wrapper.class.php > returned_collection: events.votes
db: object(MongoDB)#7862 (2) {
["w"]=>
int(1)
["wtimeout"]=>
int(10000)
}
cursor: array(7) {
["_id"]=>
object(MongoId)#7849 (1) {
["$id"]=>
string(24) "4d03d842d0645afaab4e92f6"
}
["user_id"]=>
string(13) "4d03d13b71676"
["timestamp"]=>
int(1292095809)
["context"]=>
string(3) "ms3"
["uri"]=>
string(120) "http://feeds.marketwatch.com/~r/marketwatch/podcasts/MarketwatchStupidInvestmentOfTheWeek/~3/3H-tMQLS9AA/siotw103009.mp3"
["type"]=>
string(8) "category"
["vote"]=>
int(-1)
}

两者都使用这个调试代码:

    if($debug->enabled) {
echo time() . " > mongo_wrapper.class.php > returned_collection: $returned_collection \n";
if($debug->dump) {
echo "db: ";
var_dump( $db );
echo "cursor: ";
var_dump( $cursor );
}
}

最佳答案

<?php

$connection = new Mongo();

$db = $connection->database;

$collection = $db->collection;

echo '<pre>';

print_r($collection->findOne());

$cursor = $collection->find();
foreach ($cursor as $id => $value) {
echo "$id: ";
print_r($value);
}

echo '</pre>';

?>

关于php - 为什么 findOne($query) 在集合上工作而 find($query) 不使用 PHP 的 Mongo 驱动程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4415057/

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