Ruby on rails Mongoid::Ruby中数组的条件

Ruby on rails Mongoid::Ruby中数组的条件,ruby-on-rails,arrays,ruby,mongodb,mongoid,Ruby On Rails,Arrays,Ruby,Mongodb,Mongoid,我有一个Mongoid::Criteriaobjectdata,它有634个结果: #<Mongoid::Criteria selector: {"search_id"=>155, "posted_time"=>{"$gte"=>2016-05-31 15:43:40 UTC, "$lte"=>2016-06-07 15:43:40 UTC}} options: {:sort=>{"posted_time"=>-1}, :limit=>200}

我有一个
Mongoid::Criteria
object
data
,它有634个结果:

#<Mongoid::Criteria
selector: {"search_id"=>155, "posted_time"=>{"$gte"=>2016-05-31 15:43:40 UTC, "$lte"=>2016-06-07 15:43:40 UTC}}
options:  {:sort=>{"posted_time"=>-1}, :limit=>200}
class:    MongoPost
embedded: false>

data.count
=> 634

data.to_a.count
=> 200

你在做什么?我如何解决它?

你的标准上有
限制:200
每个
(扩展为地图)都遵守限制。这就是为什么你有200张唱片

为什么
count
忽略限制-这是一个好问题。我不太清楚,但我怀疑这与分页有关。也就是说,有一个criteria对象,您可以获取一个页面知道匹配记录的总数(从中可以推断出页面的总数)

要获取有限查询的计数,可以执行以下操作:

criteria.lazy.count
count
不是来自Mongoid的,它来自Enumerable,并将遵守限制

关于取消限制:快速谷歌搜索并没有显示合适的api,但您可以使用更大的值来覆盖限制。这或许是:

criteria.limit(criteria.count).to_a # get all records, without limit
关于效率的说明 不要被
lazy
关键字所愚弄。它只是将mongo关系转换为可枚举关系。这一点也不懒惰。它仍然运行查询并迭代结果集。本质上,它与

criteria.to_a.count

您的标准上有
限制:200
每个
(扩展为地图)都遵守限制。这就是为什么你有200张唱片

为什么
count
忽略限制-这是一个好问题。我不太清楚,但我怀疑这与分页有关。也就是说,有一个criteria对象,您可以获取一个页面知道匹配记录的总数(从中可以推断出页面的总数)

要获取有限查询的计数,可以执行以下操作:

criteria.lazy.count
count
不是来自Mongoid的,它来自Enumerable,并将遵守限制

关于取消限制:快速谷歌搜索并没有显示合适的api,但您可以使用更大的值来覆盖限制。这或许是:

criteria.limit(criteria.count).to_a # get all records, without limit
关于效率的说明 不要被
lazy
关键字所愚弄。它只是将mongo关系转换为可枚举关系。这一点也不懒惰。它仍然运行查询并迭代结果集。本质上,它与

criteria.to_a.count

在当前版本的mongoid(5.x)中,这可以通过
.count
方法的选项实现

criteria.count(limit: 10)
或者,重用标准上已设置的任何限制

criteria.count(criteria.options.slice(:limit))

在当前版本的mongoid(5.x)中,这可以通过
.count
方法的选项实现

criteria.count(limit: 10)
或者,重用标准上已设置的任何限制

criteria.count(criteria.options.slice(:limit))

你有一个
限制
在那里,看到了吗?是的,我可以修改它吗?是的,一种可能是不首先设置限制。好的,我知道了,但是为什么对象
计数
返回与先前
where
标准匹配的所有元素?你有一个
限制
在那里,看到了吗?是的,我可以修改它吗?是的,一种可能是首先不设置限制。好的,我明白了,但是为什么对象
count
返回与先前
where
标准匹配的所有元素?