gpt4 book ai didi

ruby-on-rails - 即使使用限制,Rails Mongoid 模型查询结果也会返回错误的大小/长度/计数信息

转载 作者:IT老高 更新时间:2023-10-28 13:20:34 26 4
gpt4 key购买 nike

在我的 Rails 应用程序中查询某个模型时,它返回正确的结果,摘录 sizelengthcount 信息,即使使用 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

有人可以帮助我吗?谢谢!

--
Rails 版本:3.2.3
Mongoid版本:2.4.10
MongoDB版本:1.8.4

最佳答案

来自 fine manual :

- (Integer) length
Also known as: size

Get's the number of documents matching the query selector.

.limit 并没有真正改变查询选择器,因为它不会改变查询 匹配.offset.limit 改变匹配的哪一段返回。这与 ActiveRecord 的行为不匹配,并且文档并未完全明确地说明这一微妙点。但是,Mongoid 的行为确实与 MongoDB shell 的行为相匹配:

> db.things.find().limit(2).count()
23

我的 things 集合包含 23 个文档,您可以看到 count 忽略了 limit

如果你想知道有多少结果返回,那么你可以先to_a:

recipes.to_a.length

关于ruby-on-rails - 即使使用限制,Rails Mongoid 模型查询结果也会返回错误的大小/长度/计数信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20357690/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com