连接操作不工作mongo c#驱动程序linq

连接操作不工作mongo c#驱动程序linq,c#,mongodb,linq,C#,Mongodb,Linq,大家好,我正在开发mongo c#driver v2.2.3,在这篇文章中,他们引入了连接操作($lookup)。当我尝试执行联接操作时,联合文档集合计数为零。我遵循了这个链接,我的代码是 var query = from c in collection1.AsQueryable<Class>() join m in collection2.AsQueryable<ClassTwo>() on c.ClassTwoId equals m.Id

大家好,我正在开发mongo c#driver v2.2.3,在这篇文章中,他们引入了连接操作($lookup)。当我尝试执行联接操作时,联合文档集合计数为零。我遵循了这个链接,我的代码是

    var query = from c in collection1.AsQueryable<Class>()
        join m in collection2.AsQueryable<ClassTwo>() on 
 c.ClassTwoId equals m.Id into j select new { c,j }; 
     var r = await query.ToListAsync();

我不知道我犯了什么错误。。。有什么想法吗?

本博客提到C#driver v2.2.3中有一个bug,需要v2.2.4才能在驱动程序中使用$lookup函数。可能值得升级到2.2.4,看看这是否能解决您的问题


一种检查方法是使用mongo profiler选项,查看mongod实例上生成的查询,遵循mongo分析数据库操作的性能,并设置校对级别-2。这可能有关于查询的见解。顺便说一句-是最新的mongo驱动程序吗?是的,我从Nuget Package Manager下载它。mongo shell$lookup函数工作正常,但我无法在c#driverI中复制相同的结果。我可以用驱动程序v2.2.3运行LINQ$lookup。你能发布你的Class2定义,也许还有collection1和Collection2的文档吗?我也面临着同样的问题,当我们链接(objectId)\u id字段时,它会发生在两侧,当你链接一些其他数据类型如字符串时,它会起作用,可能是驱动程序中不接受objectId的错误
 public class Class
    {
        public ObjectId Id { get; set; }
        public string SomeText{ get; set; }
        public ObjectId ClassTwoId { get; set; }
        public ObjectId ClassThrId { get; set; }
        public DateTime CreatedDate { get; set; }
    [BsonIgnore]
        public ClassTwo ClassTwoDeatils { get; set; }
}