php - mongodb php findone() 通过 ID

标签 php mongodb

此代码不会根据 ID 搜索找到记录

<?php

$userid = $_GET['id'];

$theObjId = new MongoId($userid); 

$connection = new Mongo('localhost');

$db = $connection->test->items; 

$item = $db->findOne(array('_id' => $theObjId));

echo 'Item: ' . $item . '<br>';

echo 'UserID: ' . $userid . '<br>';

echo 'TheObjID: ' . $theObjId;

$connection->close(); 

?>

$userid 由另一个 .php 文件中的表单提供

这是输出....

$item: Array

 $userid: 4e0dfc8e7bfb8bac12000000

 $theObjId: 4e0dfc8e7bfb8bac12000000

输出证明我的变量包含ID

最佳答案

我只是不得不这样做,并没有想到其他答案回答了这个问题。

简单地说,要通过 Mongo ID(_id 字段)查询,请使用 MongoId对象,然后使用 iterator_to_array函数,它有效地将迭代器复制到适合迭代的数组中:

<?php

    $doc_id = "4f917f15168cbe6364000032";

    $cursor = $collection->find(
        array(
            '_id' => new MongoId($doc_id)
        )
    );

    $cursor2array = iterator_to_array($cursor);
    echo "<pre>"; print_r($cursor2array); echo "</pre>";

    foreach ( $cursor2array[$doc_id] as $key => $value )
    {
         echo "$key => $value <br/>";
    }

?>

关于php - mongodb php findone() 通过 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6557140/

相关文章:

java - BasicDBObject Builder 不为单个对象附加多个条件

mongodb - 在 Webfaction 上安装 Meteor

mongodb - 使用 mongofiles 从 MongoDB GridFS 中获取没有文件名的文件

MongoDB 查询和结果解析

php - 使用 PHP 从 JSON 更新 MySQL 表

php - 无法在 CentOS 7 上安装 phpMyAdmin

php - Laravel 5 - 从文件扩展名获取 MIME 类型

java - MongoDB 匹配数组中的所有元素

php - Redbean 的交易无效

java - LAMJ 堆栈是一个可能的环境吗?