Я использую PHP для общения с Mongo, используя findOne($query)
на db.collection
, он возвращает результат, как я и ожидал.Но изменение этой команды для find () ничего не возвращает.
Из оболочки, если вы используете db.collection.find (), она возвращает все документы.Может кто-нибудь объяснить, почему драйвер find()
PHP не будет возвращать результаты, даже если findOne()
при использовании точно такого же запроса?
ОБНОВЛЕНИЕ: Вот код.
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 );
}
}