[英]mongodb php findone() by ID
此代碼不會根據 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 由 another.php 文件中的表單提供
這是 output....
$item: Array
$userid: 4e0dfc8e7bfb8bac12000000
$theObjId: 4e0dfc8e7bfb8bac12000000
output 證明我的變量包含 ID
我只需要這樣做,並且認為其他答案沒有回答這個問題。
簡單來說,通過 Mongo ID( _id
字段)查詢,使用MongoId object,然后使用iterator_to_array function,它有效地將迭代器復制到適合迭代的數組中:
<?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/>";
}
?>
MongoDB 需要 integer 變量來創建正確的查詢。
在我的項目中,它是這樣工作的:
<?php
$id = (int)$_GET["id"];
$cursor = $this->connect()->$db->$collection->find(array('_id' => $id));
希望這對某人有幫助!
$item
是一個數組。 所以打印$item
如下..
echo '<pre>';
print_r($item);
echo '</pre>';
這篇文章有點陳舊,但如果有人正在研究這個問題,這里有幾個需要考慮的事項:
1) $item 是一個數組,所以代碼應該更像這樣:
echo 'Item: ' . $item['name'] . '<br>';
2)此外,userid 和 itemid 似乎在原始帖子中混為一談。 更常見的模式是在項目集合中設置一個“uid”字段,因此它同時具有一個“_id”和“uid”字段。 比如這樣:
$item = $db->find(array('uid' => $userid));
3)在這種模式下,有時我發現我需要將 ObjectID 或 MongoID 轉換為字符串,如下所示:
$item = $db->findOne(array('uid' => (string)$userid));
4)但對於簡單的 _id 搜索,這就是您所需要的:
$item = $db->findOne(array('_id' => new MongoId($userid));
希望這可以幫助!
如果您使用的是官方驅動程序,那么您應該使用它
$item = $db->findOne(array('_id' => new MongoDB\BSON\ObjectId($userid));
結果 ($item) 中是否包含“_id”?
echo $item['_id'];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.