2013-04-08 67 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 2013-04-08 02:12:47

+0

是的,我一定會讓這不會發生。但它讓我糾結。我已經找到了如何做到這一點。 – K1Zhang 2013-04-08 02:24:37

回答

2

好的。我發現如何做到這一點:

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

這與引用文件是否存在無關 – K1Zhang 2013-04-08 02:29:35

相關問題