猫鼬跳过、限制和计数
Posted
技术标签:
【中文标题】猫鼬跳过、限制和计数【英文标题】:Mongoose skip, limit and count 【发布时间】:2013-03-20 23:43:00 【问题描述】:我正在开发一个节点项目,我在其中为网格应用过滤器和分页。
我需要找到的项目,从查询中找到的总数以及 Mongodb 集合中的总数。
我的查询类似于(coffeescript):
projects.find(query).limit(10).skip(skip).select(q).exec (err, items) ->
projects.count().exec (err, count) ->
itemsTotals = count
itemsFound = items.length
但是如果我的查询返回的结果大于 'limit' 变量,那么找到的项目的数量就是限制,所以或者我添加第三个查询或者我直接使用聚合框架。
我真的需要这两个查询(projects.find 和 projects.count)吗?
可以通过单个 mongoose 查询获取两个值(找到的总数和集合的总数)(并且可能直接在查询中限制返回项目的结果)?
【问题讨论】:
【参考方案1】:你不能。您需要使用 limit 和 count() 执行 find(),但考虑到您正在复制查询数量,这会降低系统速度。您可以将总长度存储到内存中,并在执行 insert() 时自动递增它,而不是执行 count()。当服务器启动时,执行 count() 来初始化变量。
【讨论】:
【参考方案2】:我还没有找到更好的答案,但我发现了这个值得一提的选项。明显的缺点是数据库返回的数据集更大。
projects.find(query).select(q).exec (err, items) ->
itemsTotals = items.length
items = items.slice(skip, 10 + skip)
itemsFound = items.length
我找到了这个here
【讨论】:
以上是关于猫鼬跳过、限制和计数的主要内容,如果未能解决你的问题,请参考以下文章