将空字符串写入 MongoDB 输出 - Pentaho
Posted
技术标签:
【中文标题】将空字符串写入 MongoDB 输出 - Pentaho【英文标题】:Write empty strings to MongoDB Output - Pentaho 【发布时间】:2016-02-23 18:44:37 【问题描述】:当我尝试在 Pentaho 中将一些值写入我的 mongodb 输出时,我希望将字符串字段的空值转换为空字符串。相反,密钥本身并未出现在 mongo 数据库中。例如,如果我的字段“名称”具有空值或缺失值,那么我希望 'name':''
出现在我的 mongo 集合中。谁能帮我解决这个问题?
【问题讨论】:
您应该为您的文档设计一个架构,在存储文档之前,您可以检查哪些字段丢失,并将它们设置为'',MongoDB-3.2中的document validation
也可以帮助您,详情见docs.mongodb.org/manual/core/document-validation
你也可以看看mongoose
,mongoosejs.com/docs/api.html,它可以帮助你将缺失的字段设置为默认值。
【参考方案1】:
使用If field value is null
步骤将空值转换为空字符串。将空字符串实际存储在 mongo set KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL
in kettle.properties
中
KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL=Y
另一种解决方案是在 mongo 中创建一个模式,具有默认值,就像 @zydcom 在 cmets 中所说的那样。
【讨论】:
我已经尝试过了,但是 emty 字符串仍然没有写入 mongo。 ...这些链接中提到了其原因:forums.pentaho.com/… ...jira.pentaho.com/browse/PDI-2277 ... PDI 以相同的方式处理空值和空字符串 你检查Set empty string?
选项了吗?
:) 现在实际测试了,并且可以使用KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL
你能告诉我kettle.properties
的位置吗?
它位于您的主目录.kettle/kettle.properties
。这取决于您的操作系统。以上是关于将空字符串写入 MongoDB 输出 - Pentaho的主要内容,如果未能解决你的问题,请参考以下文章