3

我正在开发一个节点项目,我在其中为网格应用过滤器和分页。

我需要找到的项目、从查询中找到的总数以及 Mongodb 集合中的项目总数。

我的查询就像(咖啡脚本):

projects.find(query).limit(10).skip(skip).select(q).exec (err, items) ->
      projects.count().exec (err, count) ->
        itemsTotals = count
        itemsFound = items.length

但是,如果我的查询返回的结果大于“限制”变量,那么找到的项目的数量就是限制,或者我添加第三个查询或者我直接使用聚合框架。

我真的需要这两个查询(projects.find 和 projects.count)吗?

可以通过单个 mongoose 查询获取两个值(找到的总数和集合的总数)(并且可能直接在查询中限制返回项目的结果)?

4

2 回答 2

3

我还没有找到更好的答案,但我发现了这个值得一提的选项。明显的缺点是数据库返回的数据集更大。

projects.find(query).select(q).exec (err, items) ->
    itemsTotals = items.length
    items = items.slice(skip, 10 + skip)
    itemsFound = items.length

我在这里找到了这个

于 2015-07-02T14:35:34.003 回答
1

你不能。您需要使用 limit 和 count() 执行 find(),但考虑到您正在复制查询数量,这会降低系统速度。您可以将总长度存储到内存中,并在执行 insert() 时自动递增它,而不是执行 count()。当服务器启动时,执行 count() 来初始化变量。

于 2013-03-30T11:42:59.323 回答