有什么简单的方法可以在查询中找到孤立的引用吗?我有一组具有父引用的元素。在一些父母被删除后,我想搜索指向他们的元素,即那些有悬挂引用的元素。
我尝试了各种语法,但都没有奏效。
假设:
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 是非关系的,你需要自己找到所有关系。所有驱动程序通过请求任何参考来解决客户端的参考。在您的情况下,您需要遍历所有类别并尝试加载父级以防父级不存在 - 删除子级或做任何您想做的事情。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 });
}
});
这对我来说非常平静..