mysql - 相当于 MYSQL 中 COUNT (`column` ) 的 mongodb 是什么?

标签 mysql ruby-on-rails ruby mongodb mongoid

我想通过使用 mongoid 的查询来计算匹配文档的数量,例如:

Chain.where(:updated_at.gte => past_time).count

但是,我担心这里实际发生的是 mongoid 正在选择并解析 mongoid 中的所有内容,然后将计数返回给我。这看起来很慢。我希望 mongo 直接返回给我一个计数,这样 ruby​​/mongoid 就不必解析大量对象。在 MYSQL 中,我会通过执行 COUNT(column) 来做到这一点,这将免除 PHP(例如)解析/映射一堆行而忽略它们的麻烦,因为我只对返回的行数。

最佳答案

你的担心是多余的。如果您检查Mongoid docs ,您会看到 Criteria#countMoped::Query#count 周围的事物包装器。如果您查看 Moped::Query#count 的工作原理,you'll see this :

def count(limit = false)
  command = { count: collection.name, query: selector }
  command.merge!(skip: operation.skip, limit: operation.limit) if limit
  result = collection.database.command(command)
  result["n"].to_i
end

因此 Moped::Query#count 只需发送 count command进入 MongoDB,然后 MongoDB 进行计数并将计数发送回您的 Ruby 代码。

关于mysql - 相当于 MYSQL 中 COUNT (`column` ) 的 mongodb 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26369080/

相关文章:

mysql - 使用 include 时 where 子句中的未知列错误

ruby - 无法从同一网络上的另一台计算机访问本地 Sinatra 服务器

mysql - 如何从生产 MySQL 中删除大量行/数据

mysql - '无法读取未定义的属性 'length'' nodeJS Mysql

mysql查询以显示不匹配的内容

ruby-on-rails - Mechanize - 如何在 rails 中遵循或 "click"元刷新

android - 复杂的 sqLite 查询 LIKE 子句

ruby-on-rails - 数据旁边的 CSV header - Rails Import

ruby-on-rails - rails 上的 ruby : Image downloads with Authentication/Authorization/Time outs

ruby - 在 Sidekiq 工作线程中使用 Eventmachine http 请求