我有一個函數在數據庫中創建帖子。帖子獲得自己獨特的_id,但創建後,還會獲得「owner_id」,這是寫帖子的用戶的ID。問題使用find()
我有這顯示所有公開信息完全正常的功能,它看起來像這樣:
public function getPublicPosts()
{
try
{
return $this->getCollection("posts")->find(array("privacy"=>0));
}
catch(MongoCursorException $e)
{
echo "Posts retrieval failed: ".print_r($e);
}
}
所以,同樣我寫我的函數來獲取用戶的帖子是這樣的:
public function getUserPosts($user_id)
{
try
{
return $this->getCollection("posts")->find(array("owner_id"=>$user_id));
}
catch(MongoCursorException $e)
{
echo "Posts retrieval failed: ".print_r($e);
}
}
getPublicPosts完全正常。但是,即使用戶的_id和帖子的owner_id字段完全匹配,getUserPosts也會返回一個空的Mongo遊標對象。在其中顯示的帖子頁面,我已經做了下面幾點是肯定的:
<?php
foreach($public_posts as $post):
?>
<?php echo $post['owner_id']; ?><br/>
<?php echo $_SESSION['user_id']; ?>
這給出了2個職位如下結果:
4ffa66f7e3ed570f62000000 4ffa66f7e3ed570f62000000
所以我真的不確定這裏發生了什麼。我注意到,在數據庫中,當我插入用戶的ID,它的字段值出來作爲
owner_id {「$ OID」:「4ffa66f7e3ed570f62000000」}
也許這是問題嗎?在顯示公開信息時,我訪問$ posts ['owner_id']似乎不是問題。我不知道爲什麼會發生這種情況,因爲我沒有將owner_id設置爲數組,只有一個值(用戶自己的唯一_id)
任何幫助將不勝感激!
我得到的感覺是隱私是一個int值由@Sammaye規定使用其_id來查詢該文檔的數據庫的正確方式(工作用> =方程就完美了),你的ownerid被當成一個字符串來處理。 但是,這只是在黑暗中拍攝(也想知道) – Najzero 2012-08-05 09:21:32
在那裏的正確軌道上的排序!基本上問題是,當將用戶的_id插入到文檔中時,我需要將其鍵入爲字符串,因爲我猜從數據庫中檢索到的mongo _id是對象。所以當再次插入一個時,它會插入{「$ oid」:「your id」}而不是「你的id」。 – 2012-08-05 10:32:23
它在PHP – Sammaye 2012-08-05 13:16:35