2013-04-08 3 views
3

mongodb에 새로운 기능. mongodb에는 참조에 대한 제약이 없다는 것을 알고 있습니다. 따라서 참조 된 문서가 없으면 어떻게 제거 할 수 있습니까? 예를 들어mongodb에 존재하는 문서를 삭제하는 방법 ODM

: 참조 된 생성물이 제거 된

{ 
    _id: ObjectId("51619a758ead0e6765000004"), 
    createdAt: ISODate("2013-04-08T00:10:29+08:00"), 
    works: [ { $ref: "products", $id: ObjectId("51619a758ead0e6765000007"), $db: "ihome", type: "product" } ] 
} 

. 나는 그것을 일에서 끌어낼 줄 모른다. 아래에서 시도했지만 작동하지 않습니다.

$dm->createQueryBuilder('SupplierBundle:Supplier') 
    ->update() 
    ->field('id')->equals('51619a758ead0e6765000004') 
    ->field('works.$id')->pull(new \MongoId('51619a758ead0e6765000007')) 
    ->getQuery() 
    ->execute(); 

미리 감사드립니다.

+0

버그가 발생하면 수동으로 잡아 당깁니다. – gustavohenke

+0

예, 분명히 일어나지 않을 것입니다. 그러나 그것은 나를 엉키게 만든다. 이미이 작업을 수행하는 방법을 찾았습니다. – K1Zhang

답변

2

확인. 이 작업을 수행하는 방법을 찾았습니다.

$dm->createQueryBuilder('SupplierBundle:Supplier') 
    ->update() 
    ->field('id')->equals('51619a758ead0e6765000004') 
    ->field('works')->pull(array('$id' => new \MongoId('51619a758ead0e6765000007'))) 
    ->getQuery() 
    ->execute(); 
+0

그리고 참조 된 문서의 존재 여부는 중요하지 않습니다. – K1Zhang