接口作用

MongoDB中,列的类型不同(Array类型,Object类型),在转换成为二维表的时候,就会有不同的处理方式。

接口内容

package com.fr.plugin.db.mongo.expand;

import com.fr.stable.fun.mark.Mutable;
import org.bson.Document;

import java.util.List;

public interface ColumnResolver extends Mutable {

    String MARK_STRING = "ColumnResolver";

    int CURRENT_LEVEL = 1;

    /**
     * 是否需要处理该类型的元素
     *
     * @param cell doc查询出来的对象
     * @return 需要做扩展处理则返回true,否则返回false
     */
    boolean accept(Object cell);


    /**
     * 扩展特殊列,增加新的行
     *
     * @param doc                 MongoDB的文档查询对象
     * @param columnNames         列民集合
     * @param waitingColumnsIndex 需要特殊处理的列集合
     * @param rowDataCollections  扩展出来的行数据集合
     * @param rowData             当前行数据
     */
    void expandData(Document doc, List<String> columnNames, List<Integer> waitingColumnsIndex, List<List<Object>> rowDataCollections, List<Object> rowData);
}

示例实现

我们以数组元素为例子,面对这样的数据结构:

{ 
    "name" : "李四", 
    "age" : NumberInt(15), 
    "language" : [
        "英语", 
        "数学", 
        "物理", 
        "化学"
    ], 
    "region" : [
        "新疆", 
        "海南", 
        "台湾"
    ], 
    "country" : "US"
}