Paginate子文件MongoDB

时间:2012-06-27 09:35:15

标签: mongodb paginate

我正在尝试为存储在MongoDB中的产品文档创建一个分页机制。使这个棘手的原因是每个文档可以有多种颜色,我需要通过这些而不是文档本身进行分页。例如。下面的示例有两种颜色,然后应该在我的分页结果中计为2。

如何以最简单/最有效的方式解决这个问题?

提前致谢!

{
        "_id": ObjectId("4fdbaf608b446b0477000142"),
        "created_at": newDate("14-10-2011 12:02:55"),
        "modified_at": newDate("15-6-2012 23:55:43"),
        "sku": "A1051g",
        "name": {
            "en": "Earrings - Celebrity"
        },
        "variants": [
            {
                color: {
                    en: "Blue"
                }
            },
            {
                color: {
                    en: "Yellow"
                }

            }
        ]
    }

1 个答案:

答案 0 :(得分:1)

我喜欢Sammaye的解决方案,但另一种方法可能只是取回比您需要的更多结果。

例如,如果每页需要100个变体,并且每个产品至少有1个变体,则查询限制为100以尝试获得100个产品,因此至少有100个变体。

有可能,您将拥有超过100种变体(每种产品的数量超过1),因此在迭代光标时会构建产品列表,跟踪数字变体。

如果您有100个变种,请记下您检索到的100个产品中有多少个产品,并将其用作下次查询的跳过。

这对于大型跳过来说最终会变得昂贵,因为你必须寻找你跳过的文件数量,但现在可能是一个很好的解决方案。