从一个集合中获取未从其他集合引用的所有文档

时间:2018-03-09 19:47:23

标签: c# mongodb mongodb-.net-driver

我正在尝试从集合A中查找未从集合B中的任何文档引用的所有文档。

我找到this answer,但我无法将其翻译为C#。

到目前为止,我已经尝试过这个:

from a in docA.AsQueryable()
join b in docB.AsQueryable() on a.Id equals b.DocARef into bs
from sub_b in bs.DefaultIfEmpty()
where sub_b == null
select new { a.Id, a.Name };

from a in docA.AsQueryable()
join b in docB.AsQueryable() on a.Id equals b.DocARef into bs
from sub_b in bs.DefaultIfEmpty()
where !bs.Any()
select new { a.Id, a.Name };

两者都会产生NotSupportedException$project or $group does not support {document}.

我做错了什么?

1 个答案:

答案 0 :(得分:0)

看起来C#驱动程序在这里没有正确遵循LINQ的约定。

正确的查询如下所示:

var result =
from a in docA.AsQueryable()
join b in docB.AsQueryable() on a.Id equals b.DocARef into bs
where !bs.Any()
select new { a.Id, a.Name };

请注意,没有DefaultIfEmpty但是联接的行为仍然像左外连接。