我正在尝试找到最快的方法来了解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列表。
问题是:找到/投射是否有效?还是有更快的方法来实现同样的目标?
(红利问题:如何使用流畅的语法进行查询?:))
答案 0 :(得分:0)
根据我的意见,你这样做的方式还可以。我也会这样做。 Project
步骤正在服务器上执行,因此您无法获得完整的文档,只需要ID,它就是您想要的。
您可以使用流利的语法执行相同的查询,它只是(我假设您的集合在collection
变量中):
collection.Find(_=>L.Contains(_._id)).Project(_=>_.Id).ToList();