连接操作不工作mongo c#驱动程序linq
大家好,我正在开发mongo c#driver v2.2.3,在这篇文章中,他们引入了连接操作($lookup)。当我尝试执行联接操作时,联合文档集合计数为零。我遵循了这个链接,我的代码是连接操作不工作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
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; }
}