我有这样的疑问:

  @allJobs = Job.where(:merchant_id => session[:admin_id].to_s).sort(:start_date.desc).limit(100)

当我跑步的时候,我会得到:
 jobs count 1720

我希望看到:
 jobs count 100

我做错什么了?
如果我尝试运行job.all(query.limit(100))我将得到“数组foo的未定义方法限制”
似乎我无法将结果限制为按开始日期降序排序的100条记录!
更新:
我甚至不能做这样简单的事情:
@allJobs = Job.limit(100)
      Rails.logger.info("@allJobs count is " + @allJobs.count.to_s)

慰问:
@allJobs count is 2080

.limit()在我看来完全没用。

最佳答案

对我来说,用where开始我的子句,并进一步缩小它们的范围,或者修改它们似乎是合乎逻辑的……在mongomapper中,我发现查询的严格性比说一个需要按正确顺序执行的sql select查询要“宽松”得多……我倾向于或多或少地用这个fashio编写查询。N:

ModelClass.where(some criteria).[sort | order | another where clause | fields | limit].[all | first | paginate]

此外,需要注意的是,mongomapper返回一个查询,并且在添加需要结果的内容之前不会实际执行该查询。例如:allfirstpaginatesort等。
2.0.0-p247 :001 > Structure.where(:address => /NJ/).count
 => 22
2.0.0-p247 :002 > Structure.where(:address => /NJ/).limit(2).count
 => 22
2.0.0-p247 :003 > Structure.where(:address => /NJ/).limit(2).all.count
 => 2

这里有更多的细节:http://technicaldebt.com/mongomapper-query-review/对于底层的大胆查询语法,这里有:https://github.com/mongomapper/plucky

关于mongodb - Mongo_mapper限制结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20778135/

10-09 07:37