2011-03-29 5 views
1

다음 코드를 사용하여 지정된 문서를 삭제하십시오.Perl mongodb 기록 질문을 제거

sub delete_post{ 
my $post_id = shift; 
my $post_to_delete = $posts->find_one({"_id" => $conn->oid($post_id)})->{_id}; 
$posts->remove({"_id" => $post_to_delete}); 

}

경우 사용이 코드 :

sub delete_post{ 
my $post_id = shift; 
$posts->remove({"_id" => $conn->oid($post_id)}); 

}

제거 모든 문서.

mongodb는 문서 삭제 기준으로 oid를 수락 할 수 있습니까?

+0

왜'$ conn-> oid' 필요합니까? 다음은 작동하지 않습니까? '$ posts-> remove ({ "_ id"=> $ post_id}); ' –

+0

재해. 첫 번째 방법은 무작위로 하나의 문서를 제거하거나 모든 문서를 제거하는 것입니다. 두 번째 방법은 none을 제거합니다. – Weiyan

+0

[link] (http://stackoverflow.com/questions/5480645/pel-mongo-coll-find-one-id-xxxx-method-not-function-as-expected)는 키로 안전하지 않은 사용 _id에 대한 또 다른 질문입니다. find 메소드에서. – Weiyan

답변

2

$ conn-> oid 대신에 _id 오브젝트를 생성하려면 MongoDB :: OID 메소드를 사용하십시오.

sub delete_post{ 
my $post_id = shift; 
my $oid = MongoDB::OID->new(value => $post_id); 
$posts->remove({"_id" => $oid}); 
$db->log->insert({"removed_post" => $post_id}); 

은}