1

有什么简单的方法可以在查询中找到孤立的引用吗?我有一组具有父引用的元素。在一些父母被删除后,我想搜索指向他们的元素,即那些有悬挂引用的元素。

我尝试了各种语法,但都没有奏效。

4

3 回答 3

5

假设:

  • 父集合是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 });
    }
});
于 2013-06-24T14:01:40.037 回答
0

不,不是,因为 mongodb 是非关系的,你需要自己找到所有关系。所有驱动程序通过请求任何参考来解决客户端的参考。在您的情况下,您需要遍历所有类别并尝试加载父级以防父级不存在 - 删除子级或做任何您想做的事情。Dbref文档

于 2011-10-13T08:18:28.220 回答
0
db.childCollection.find().forEach(function(f) {
    if(f.refKey && db.parentCollection.find({ "_id": f.refKey.$id}).count() != 1) {
        db.childCollection.remove({ _id: f._id });
    }
});

这对我来说非常平静..

于 2016-12-26T20:10:21.603 回答