我有以下原型的文档:
{
title: "HD8200 DLP Projector",
normal_price: 4999.99,
specifications: [
{
ov: "HD (1920 x 1080)",
fn: "Resolution (Native / Max)",
o: 7,
f: 211
},
{
ov: "20000",
fn: "Contrast Ratio",
o: 15,
f: 225
}
]
}
我希望根据规格为这个产品数据库创建一个过滤器列表。
我怎么能得到一个列表的选项id (o
)映射到他们的产品计数器,为每个字段(f
)?
让我们假设我需要为特定的字段id列表(例如211和225)实现这一点。
编写一个映射器,每个map()调用取一个文档,并为每个选项写出一条记录。记录键将是字段ID,值将是标志"1"、产品标题和选项ID的连接。
编写另一个映射器来读取id列表,并以相同的格式写出记录:键是字段id,值是标志"0"和两个空字符串的连接。
写一个Reducer来读入两个映射器写的记录。每次调用reducer()都会传入为给定字段写的所有记录。如果其中一条记录有"0"标志,那么该字段就是您感兴趣的字段之一。只有这样,您才能为每个带有"1"标志的记录写一条记录。关键字是产品标题,值是选项id。
定义第一个作业驱动程序类,使用两个映射器和一个reducer。此步骤将为您指定的字段id提供成对的产品选项。您将需要第二个任务来按产品收集选项,反之亦然。