【发布时间】:2021-10-21 16:48:34
【问题描述】:
如果文档总数超过 N,则获取第 N 个文档。如果小于 N,则获取最后一个文档。
如何为此编写查询?
一种方法可以是
N = 100
query = {} # some other conditions
Model.where(query).limit(N).to_a.last
# This is inefficient as it fetches all N documents
Model.where(query).limit(N).last
# This doesn't work since .last translates to .limit(1) and replaces .limit(N)
Model.where(query).skip(N-1).first
# this doesn't work when total number of documents is less than N
m = Model.where(query).skip(N-1).first
m = Model.where(query).last if !m
# This works but can we do it in a single query?
【问题讨论】:
-
任何纯粹基于
mongo的答案也很感激 -
我不相信你可以在一个查询中做到这一点。如果您的应用程序相对较小,我不会担心性能。稍后调整
标签: ruby-on-rails mongodb mongodb-query