寻找孤儿DBRef收集



是否有简单的方法来查找查询中的孤立引用?我有一个有父引用的元素集合。在一些父母被删除后,我想搜索指向它们的元素,即那些有悬挂引用的元素。

我尝试了各种语法,但没有一个工作。

假设:

  • 父集合为parentCollection
  • 子集合为childCollection
  • 子节点通过childCollection.parentRefId引用父节点,

然后您可以通过向mongo发出以下命令来删除所有悬空子对象:

db.childCollection.find().forEach(function(f) { 
    if(f.parentRefId && !db.parentCollection.findOne({ _id: f.parentRefId})) {        
        db.childCollection.remove({ parentRefId: f.parentRefId });
    }
});

不,因为mongodb是非关系的,你需要自己找到所有的关系。所有驱动程序在客户端通过请求任何引用来解析引用。在你的情况下,你需要遍历所有类别,并尝试加载parent,如果parent不存在-删除child或做任何你想要的。Dbref文档

db.childCollection.find().forEach(function(f) {
    if(f.refKey && db.parentCollection.find({ "_id": f.refKey.$id}).count() != 1) {
        db.childCollection.remove({ _id: f._id });
    }
});

这对我来说很平静…

相关内容

  • 没有找到相关文章

最新更新