MongoDB:查询中间的CursorNotFound

时间:2017-06-28 12:09:40

标签: mongodb mongodb-query

我正在使用MongoDB shell version: 3.0.7并且在长查询的中间(Double forEach~30k * 230k条目)查询停止并且我得到CursorNotFound

这是查询。

db.EUCtrCopy.find().forEach(function (data){
    db.USFull.find({$or:[{"clinical_study.brief_title" : data.ASection.FullTitle },{"clinical_study.official_title" : data.ASection.FullTitle },{"clinical_study.id_info.org_study_id" : data.ASection.SponsorProtocolNumber}]}).forEach(function (val) {
        db.USEUOverlap.insert({"USId": val._id, "EUId" : data._id})
        print("It's a match ! ("+data._id+")");
    });
});

我读到当您在MongoDB Shell中闲置时,您可能会遇到CursorNotFound问题。但它恰好发生在查询的中间。 我怎样才能读到这个错误?

感谢。

1 个答案:

答案 0 :(得分:2)

EUCtrCopy 集合使用聚合通过提供本地字段和外地字段,将$lookup USFull 与一个字段一起使用,然后添加$filter以执行其余操作此管道中的条件最终使用带有 USEUOverlap $out管道将结果作为集合获取

供参考$filter $lookup