데이터베이스에 게시물을 만드는 기능이 있습니다. 게시물은 고유 한 _id를 가지지 만 작성시 게시물을 작성한 사용자의 ID 인 "owner_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는 정상적으로 작동합니다. 그러나 getUserPosts는 사용자의 _id 및 게시물의 owner_id 필드가 정확히 일치하는 경우에도 빈 Mongo 커서 객체를 반환합니다. 게시물을 표시하는 페이지에서 내가 확인하려면 다음을 수행했습니다
<?php
foreach($public_posts as $post):
?>
<?php echo $post['owner_id']; ?><br/>
<?php echo $_SESSION['user_id']; ?>
그리고 이것은이 게시물에 대한 다음과 같은 결과 제공 : 그래서
4ffa66f7e3ed570f62000000 4ffa66f7e3ed570f62000000
을 나는 여기서 무슨 일이 일어나고 있는지 정말로 확신하지 못한다. 나는 사용자의 ID를 삽입하고 때 데이터베이스에, 그것은
OWNER_ID
로 필드 값에서 오는 것으로 나타났습니다 { "$의 OID": "4ffa66f7e3ed570f62000000"} 아마도이
문제는 무엇입니까? 공개 게시물을 표시 할 때 $ posts [ 'owner_id']에 액세스 할 때 문제가되지 않는 것 같습니다. owner_id를 배열로 설정하지 않고 하나의 값 (사용자 고유의 _id)을 설정하지 않으므로 왜 이런 일이 발생하는지 알 수 없습니다.
도움이 될만한 정보가 있습니까?
위 @Sammaye에 의해 명시된 바와 같이 다음과 같은 방법을 사용하는 PHP는 사용하여 _id를 사용하여 문서에 대한 데이터베이스를 조회하는 올바른 방법 (작업 > = 방정식으로 완벽하게) 그리고 ownerid는 문자열로 처리됩니다. 하지만 그것은 어둠 속에서의 단지 발사입니다. (궁금 할지라도) – Najzero
오른쪽 트랙에 가보세요! 기본적으로 문제는 사용자의 _id를 문서에 삽입 할 때 DB에서 검색 한 mongo _id가 객체라고 추측하므로 문자열로 입력해야했습니다. 그래서 다시 삽입 할 때 "id"가 아닌 { "$ oid": "your id"}를 삽입합니다. –
PHP는 – Sammaye