此代码不会根据 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/