当在我的 Rails 应用程序中查询某个模型时,它返回正确的结果,摘录size
, length
or count
信息,甚至使用limit
标准。
recipes = Recipe
.where(:bitly_url => /some.url/)
.order_by(:date => :asc)
.skip(10)
.limit(100)
recipes.size # => 57179
recipes.count # => 57179
recipes.length # => 57179
我不明白为什么会发生这种情况,它一直显示食谱集合的总数,并且正确的值应该是 100,因为我使用了limit
.
count = 0
recipes.each do |recipe|
count += 1
end
# WAT
count # => 100
有人可以帮助我吗?
谢谢!
--
导轨版本:3.2.3
Mongoid 版本:2.4.10
MongoDB 版本:1.8.4
来自精美手册 http://rubydoc.info/github/mongoid/mongoid/Mongoid/Contextual/Mongo%3alength:
-(整数)长度
也称为:size
获取与查询选择器匹配的文档数。
But .limit
并没有真正改变查询选择器,因为它没有改变查询的内容matches, .offset
and .limit
改变比赛的哪个部分returned。这与 ActiveRecord 的行为不匹配,并且文档对于这个微妙点并不完全明确。然而,Mongoid 的行为确实与 MongoDB shell 的行为相匹配:
> db.things.find().limit(2).count()
23
My things
集合包含23
文件,你可以看到count
忽略limit
.
如果你想知道有多少结果returned那么你可以to_a
首先:
recipes.to_a.length
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)