2013-04-08 71 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

相关问题