Mongo C# - FindOne在哪里?

时间:2017-08-02 07:53:28

标签: c# mongodb

我无法理解如何在Mongo C#2.4驱动程序中执行findOne操作。

我收藏的文件超过910万份。当我在Robomongo中执行findOne时,查询需要0秒,并返回我想要的结果。

在C#中,大约需要7-8秒。

目前我正在实施一个这样的发现:

var result = await _collection.Find(filterDefinition).SingleAsync();

这需要7到8秒。

Mongo查询 - 查找一个 - 0秒

.findOne({ipFrom: { $lte: 1436497981 }, ipTo: { $gte: 1436497981 }});

Mongo查询 - 查找 - 7.4秒

.find({ipFrom: { $lte: 1436497981 }, ipTo: { $gte: 1436497981 }});

我在FindOne上找不到FindOneAsyncIMongoCollection<>方法,所以我怀疑.Find(...).SingleAsync()只是在执行mongo find功能。我可以看到有FindOneAndUpdateFindOneAndDeleteFindOneAndReplace,但没有FindOne

我用于查询的我的过滤器定义如下:

var filter = Builders<TLocationEntity>.Filter;

var filterDefinition = filter.And(
    filter.Lte("ipFrom", ipValue),
    filter.Gte("ipTo", ipValue)
);

基本上,在C#驱动程序中执行findOne的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

添加client/public/js/为我修复了它:

Limit(1)

我原本希望await _collection.Find(filterDefinition).Limit(1).SingleAsync(); 在其中执行.SingleAsync(),但它似乎会执行Limit(1)。这足以使我的查询从0秒到8秒。