MongoDB / C#:检查数组中的文档是否存在而不返回它们

时间:2017-03-04 15:08:14

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

我正在尝试找到最快的方法来了解MongoDB中是否存在大量文档。我不需要文件本身,只是确认它们的存在。

我们假设我有这个清单:

var L = new List<string> {"1", "3", "A"};

我想知道这些文件是否存在。

一种方法就是这样(语法可能有点偏,因为我是从内存中尝试这个,但想法就在那里):

find(Query.In(_ => _._id, L));

并且它有效,但它也会返回所有文档,这是浪费时间

所以,我只通过投影得到了ID:

find(Query.In(_ => _._id, L)).Project(Projection.Expression(_ => _._id));

这非常有效,并返回现有ID列表。

问题是:找到/投射是否有效?还是有更快的方法来实现同样的目标?

(红利问题:如何使用流畅的语法进行查询?:))

1 个答案:

答案 0 :(得分:0)

根据我的意见,你这样做的方式还可以。我也会这样做。 Project步骤正在服务器上执行,因此您无法获得完整的文档,只需要ID,它就是您想要的。

您可以使用流利的语法执行相同的查询,它只是(我假设您的集合在collection变量中):

collection.Find(_=>L.Contains(_._id)).Project(_=>_.Id).ToList();