使用 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"