Docs 菜单
Docs 主页
/
BI Connector
/

使用 MongoDB 视图

在此页面上

  • 示例

在不使用 .drdl文件的情况下控制BI Connector可见数据的另一种方法是从视图读取。 视图允许您获取源集合并选择要显示的字段、更改字段名称、对数据进行排序以及执行聚合管道可以完成的任何类型的转换。

例子

您可以使用视图编辑集合中的敏感信息,并指示 BI Connector 从视图而不是源集合中读取。

使用mongo shell方法createView在集合上定义视图,然后在启动mongosqld时将该视图用作指定的命名空间。

employees数据库中名为salaries的collection为例。通过在salaries collection上创建不包括所有个人身份信息的视图,BI Connector 可以安全地促进对该视图的数据分析,而不会泄露源collection中的私有数据。

以下命令使用employees数据库中名为salaries_redacted的视图中的数据启动mongosqld

mongosqld --sampleNamespaces "employees.salaries_redacted"

提示

另请参阅:

使用 MongoDB 视图管理模式的另一个使用案例是,如果您的工作数据集包含一个填充稀疏但重要的字段,该字段可能会在 BI Connector 采样过程中被排除。

考虑一个名为sparseCollection的集合,其中包含一个在每个文档中出现的字段和另一个仅偶尔出现的字段。 collection的一部分可能如下所示:

{ "_id" : 0, "mainField": 247 }
{ "_id" : 1, "mainField": 71 }
{ "_id" : 2, "mainField": 981 }
{ "_id" : 3, "mainField": 712 }
{ "_id" : 4, "mainField": 781, "sparseField": 1000 }
{ "_id" : 5, "mainField": 256 }
{ "_id" : 6, "mainField": 910 }

为确保 BI Connector 创建模式时包含sparseField ,请创建一个视图,在每个文档中,每个未出现sparseField的文档均会用零填充 。

db.runCommand (
{
create: "denseCollection",
viewOn: "sparseCollection",
pipeline: [
{
$addFields: {
sparseField: { $ifNull: [ "$sparseField", 0 ] }
}
}
]
}
)

要在启动mongosqld时将视图用作数据源,请使用--sampleNamespaces选项指定它。

mongosqld --sampleNamespaces "myDatabase.denseCollection"

后退

自动模式模式(MongoDB 中模式持久化)

在此页面上