当前位置: 首页 > 知识库问答 >
问题:

蒙戈C#-Findone在哪里?

亢琦
2023-03-14

我很难理解如何在Mongo C#2.4驱动程序中执行findone操作。

我收藏了910多万张平面文件。在Robomongo中执行findone时,查询需要0秒,并返回所需的结果。

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

目前,我正在实现一个查找,如下所示:

var result = await _collection.Find(filterDefinition).SingleAsync();
.findOne({ipFrom: { $lte: 1436497981 }, ipTo: { $gte: 1436497981 }});
.find({ipFrom: { $lte: 1436497981 }, ipTo: { $gte: 1436497981 }});

imongoCollection<>上找不到findonefindoneSync方法,因此我怀疑.find(...).singleAsync()只是在执行mongofind函数。我可以看到有FindoNeanDupDateFindoNeandDeleteFindoNeandReplace,但没有FindoNe

我为查询使用的筛选器定义如下:

var filter = Builders<TLocationEntity>.Filter;

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

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

共有1个答案

秦景同
2023-03-14

添加限制(1)为我修正了它:

await _collection.Find(filterDefinition).Limit(1).SingleAsync();

我本来希望.singleasync()在其中执行limit(1),但是它似乎执行了.limit(2)。这足以使我的查询从0秒变为8秒。

 类似资料:
  • 我使用mongoDB通过一个spring web应用程序存储和查询近50万条记录(没有固定模式的大型Json文件)。简单的基于K-V对的查找查询只需几秒钟。我正在寻找将搜索时间缩短到 由于存储文件的性质,索引对我不起作用。我正在寻找替代方案,并遇到了分片。但是,我没有找到很好的教程来解释如何为我现有的spring-mongo应用程序设置分片。 有人能给我一个好的解释吗?此外,任何其他优化搜索时间的

  • 问题内容: 我正在将算法从C移植到Go。我有些困惑。这是C函数: 在for循环中,将值s分配给元素cd数组x。这怎么可能?据我所知,长双精度数是float64(在Go上下文中)。因此,我不应该编译C代码,因为我正在向只包含uint64元素的数组分配一个long double。但是C代码可以正常工作。 那么有人可以解释为什么这行得通吗? 非常感谢你。 更新: 该函数的原始C代码可以在以下位置找到:h

  • 这是MongoDB的后续问题:类java.lang.Double不能转换为类java.lang.Long 问题可能是任何指示的字段实际上都存储为Double而不是Long。 是否有一种方法可以强制MongoDB中某些字段的数据类型? 如果数据类型不匹配,我希望插入文档失败。

  • 我注意到mongo的Spring数据中有一些奇怪的东西: 扩展了findAll()方法时,返回一个Iterable。 在mongo < code > mongo repository 中,< code>findAll()方法返回一个< code >列表: 但是< code>List#size()返回一个< code>int,而< code > MongoRepository # count()方法

  • 这是我的settings.py: 我已经验证了电子邮件地址,并生成了SMTP凭据,我下载了包含IAM用户名、Smtp用户名、Smtp密码的凭据。我使用smtp用户名EMAIL_HOST_USER和smtp密码EMAIL_HOST_PASSWORD。 在django中,我发送了一封带有以下行的电子邮件(admin@admin.com替换为已验证电子邮件列表中的gmail帐户): 那是行不通的。从SE