我正在尝试为存储在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"
}
}
]
}
答案 0 :(得分:1)
我喜欢Sammaye的解决方案,但另一种方法可能只是取回比您需要的更多结果。
例如,如果每页需要100个变体,并且每个产品至少有1个变体,则查询限制为100以尝试获得100个产品,因此至少有100个变体。
有可能,您将拥有超过100种变体(每种产品的数量超过1),因此在迭代光标时会构建产品列表,跟踪数字变体。
如果您有100个变种,请记下您检索到的100个产品中有多少个产品,并将其用作下次查询的跳过。
这对于大型跳过来说最终会变得昂贵,因为你必须寻找你跳过的文件数量,但现在可能是一个很好的解决方案。