2

我正在尝试为存储在 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"
                }

            }
        ]
    }
4

1 回答 1

1

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

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

很有可能,您将拥有 100 多个变体(每个产品有超过 1 个),因此当您遍历光标以跟踪数量变体时构建一个产品列表。

当您有 100 个变体时,请记下您在列表中有多少个产品,在您检索的 100 个中,并将其用作下一个查询的跳过。

对于大型跳过,这最终会变得昂贵,因为您将不得不寻找跳过的文档数量,但现在可能是一个很好的解决方案。

于 2012-06-27T14:34:28.807 回答