使用 MongoDB C# 驱动程序查询构建器获取项目计数

2024-02-03

使用 MongoDB 的 C# 驱动程序,我可以轻松构建一个查询,然后可以添加 SetSkip() 和 SetLimit() 参数以将结果集限制为特定大小。

不过,我希望能够在应用 Skip 和 Take 之前知道查询的项目数是多少without执行查询并将整个结果集(可能很大)加载到内存中。

看起来我可以使用 count() 命令直接通过 shell 对 MongoDB 执行此操作。例如。:

 db.item.find( { "FieldToMatch" : "ValueToMatch" } ).count()

它只返回一个整数,这正是我想要的。但我在文档中看不到通过 C# 驱动程序执行此操作的方法。是否可以?

(应该注意的是,我们已经广泛使用查询构建器,因此理想情况下,我宁愿通过查询构建器来执行此操作,而不是开始通过驱动程序向 shell 发出命令(如果可能的话)。但如果这是唯一的解决方案,那么一个例子会很有帮助,谢谢。)

干杯, 马特


你可以这样做:

var server = MongoServer.Create("mongodb://localhost:27020");
var database = server.GetDatabase("someDb");

var collection = database.GetCollection<Type>("item");
var cursor = collection.Find(Query.EQ("FieldToMatch" : "ValueToMatch"));

var count = cursor.Count(); 

一些注意事项:

  1. 您应该只有一个服务器实例(单例)
  2. 最新的驱动程序版本实际上返回长计数而不是整数
  3. 游标仅在迭代后获取数据
  4. 您可以配置很多东西,例如跳过,采取,指定在实际加载数据之前在游标中返回的字段(开始迭代)
  5. 游标的 Count() 方法仅加载文档计数
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 MongoDB C# 驱动程序查询构建器获取项目计数 的相关文章

随机推荐

  • OptionParser python 模块 - 同一变量的多个条目?

    我正在编写一个小 python 脚本来从多个服务器或单个服务器获取统计信息 并且使用 OptionParser 来解析命令行输入 usr bin python import sys from optparse import OptionPa
  • 即使签名的最后一个字符发生更改,JWT 令牌也能解码

    我只是使用这个 jwt 库在 Rails 应用程序上尝试 JWT 令牌 https github com jwt ruby jwt https github com jwt ruby jwt JWT encode sss 333 SECRE
  • 为什么Java NIO可以优于标准Java套接字?

    最近我正在使用 Java 套接字和 NIO 来编写服务器 尽管我仍然不太清楚为什么 Java NIO 优于标准套接字 当使用这些技术之一编写服务器时 在大多数情况下 它归结为具有一个接受连接并将其进一步传递给工作线程的调度程序线程 我读过
  • 如何在 JSP 中的 derby 数据库中插入和删除值?

    历史 history https stackoverflow com questions 44149892 how can i insert value to a database to derby in jsp 问题是我无法从数据库中删除
  • 将函数推入数组 - 循环和拼接?

    使用 Javascript 我需要能够 1 将一定数量的相同函数 每个函数具有不同的参数 推送到数组中 2 然后一一运行每个函数 在本例中只是参数 编号的警报 3 在每个函数之后 我需要能够将该函数从数组中拼接出来 4 每次之后检查数组长度
  • Mac Os X 上的 NDK 构建错误:“致命错误:stdint.h:没有这样的文件或目录”

    我使用以下构建命令来构建OpenH264 https github com cisco openh264项目 make OS android ARCH arm64 NDKROOT Library Android android ndk r1
  • SVG 和 HTML 中的缩放元素有区别吗?

    这个问题 https stackoverflow com questions 5882716 html5 canvas vs svg vs div看起来很相似但最终是不同的并且没有帮助 而且 接受的答案是2011年写的 似乎已经过时了 该问
  • 在 R Shiny 中跨多个模块使用reactiveValues

    我正在尝试在 R 闪亮应用程序中的多个模块中使用reactiveValues 我举了一个例子来说明我的问题 它由一个主应用程序组成 其中包含一个reactiveValue 它是一个3列的数据帧和3个旨在 读取 写入 和 读写 reactiv
  • 如何使用 Swift 将 JSON 数组数据加载到 UIActionSheet 按钮标题中

    I have JSON内的数据array 我需要加载这个数组数据UIActionSheet button title 在这里 我尝试使用单个创建一个通用的 UIActionSheetbutton 基于数组字符串 我需要加载数据作为按钮标题
  • Python 的多个构造函数

    我有一个 A 类 可以通过两种不同的方式生成 a A xml 文件路径 a A 列表 列表 第一个方法以文件路径作为输入 从 XML 文件解析以获取 listA 和 listB 第二种方法给出了两个列表 我可以想到两种方法来实现多个构造函数
  • 虚函数可以被非虚函数覆盖吗?

    在此代码中 class Base public virtual void method 0 class Derived1 public Base public virtual void method override class Deriv
  • 从顶部滑动抽屉

    我试图让一个滑动抽屉在我的应用程序中从顶部拉下 但我无法找到一种方法来做到这一点 有什么帮助吗 内置的滑动抽屉不是那么灵活 你最好的选择是扩展它并修改它的行为 或者看看这个http code google com p android mis
  • Git 软件(例如 Gitbox、Github、SourceTree)可以使用远程存储库而不是本地存储库吗?

    我喜欢使用 Git 软件来推送提交 但我使用的软件 Gitbox Github SourceTree 在向其添加新存储库时都要求本地存储库 问题是 我的存储库位于我的开发服务器上 而不是我的本地计算机上 那么 Git 软件是否可以使用远程
  • Nodejs Express 4 Multer | Nodejs Express 4 Multer如果用户未授权则停止文件上传

    我在用着multer作为 Express 4 的多部分中间件 Express 配置为使用护照作为身份验证中间件 但如果用户未经身份验证 我找不到阻止文件上传的方法 我想使用 onFileUploadStart 来拒绝该文件 但我找不到与 请
  • 禁用链接和 上的浏览​​器工具提示

    当用户将鼠标悬停在某些链接和元素上时 我想抑制网络浏览器的默认工具提示显示 我知道这是可能的 但我不知道如何实现 有人可以帮忙吗 这样做的原因是抑制微格式日期时间的工具提示 BBC 放弃了对 hCalendar 的支持 因为机器可读日期的外
  • 您可以隐藏 QGroupBox 框架但保留其内容可见吗?

    我有一个QGroupBox 根据上下文 它的标题可能是多余的 显示在 GUI 的另一个位置 所以我需要将QGroupBox不在这里 但我必须保留它的内容可见 所以我不想打电话QGroupBox hide 我需要在运行时动态执行此操作 并希望
  • 如何使 Groovy 方法真正受到保护

    尝试在groovy中创建一个方法protected package com foo class Foo protected def getSomething 这不起作用 因为默认情况下 groovy 几乎使所有内容都可见 所以我尝试使用 P
  • HTML 按钮 - 按住按钮时它将重复该操作

    我是 HTML 新手 我正在开发一个项目 该项目需要使用一个按钮 当您按住它时 它会重复相同的操作 这是我到目前为止得到的代码 但没有起作用 DOCTYPE html gt
  • 三个值的异或

    进行三向异或的最简单方法是什么 换句话说 我有三个值 并且我想要一个仅计算为 true IFF 的语句one三个值中的一个为真 到目前为止 这就是我想出的 a b a c b c b a b c a c c a c b a b 有没有更简单
  • 使用 MongoDB C# 驱动程序查询构建器获取项目计数

    使用 MongoDB 的 C 驱动程序 我可以轻松构建一个查询 然后可以添加 SetSkip 和 SetLimit 参数以将结果集限制为特定大小 不过 我希望能够在应用 Skip 和 Take 之前知道查询的项目数是多少without执行查