我无法理解如何在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
上找不到FindOneAsync
或IMongoCollection<>
方法,所以我怀疑.Find(...).SingleAsync()
只是在执行mongo find
功能。我可以看到有FindOneAndUpdate
,FindOneAndDelete
和FindOneAndReplace
,但没有FindOne
。
我用于查询的我的过滤器定义如下:
var filter = Builders<TLocationEntity>.Filter;
var filterDefinition = filter.And(
filter.Lte("ipFrom", ipValue),
filter.Gte("ipTo", ipValue)
);
基本上,在C#驱动程序中执行findOne
的正确方法是什么?
答案 0 :(得分:3)
添加client/public/js/
为我修复了它:
Limit(1)
我原本希望await _collection.Find(filterDefinition).Limit(1).SingleAsync();
在其中执行.SingleAsync()
,但它似乎会执行Limit(1)
。这足以使我的查询从0秒到8秒。