我想通过使用 mongoid 的查询来计算匹配文档的数量,例如:
Chain.where(:updated_at.gte => past_time).count
但是,我担心这里实际发生的是 mongoid 正在选择并解析 mongoid 中的所有内容,然后将计数返回给我。这看起来很慢。我希望 mongo 直接返回给我一个计数,这样 ruby/mongoid 就不必解析大量对象。在 MYSQL 中,我会通过执行 COUNT(column
) 来做到这一点,这将免除 PHP(例如)解析/映射一堆行而忽略它们的麻烦,因为我只对返回的行数。
最佳答案
你的担心是多余的。如果您检查Mongoid docs ,您会看到 Criteria#count
是 Moped::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/