我有一个相当大的数据集合,由第三方制作,它包含一个 Bindata“包”列,其中实际存储了纯 ASCII。我的意思是,他们可以将文本存储为字符串。
我必须以 csv 格式导出这个集合,这与 mongoexport 配合得很好,但输出包含“包”列的 base64 编码值。我需要该列中的实际文本,而不是BinData(0,\"NDYuN.....==")
.
到目前为止,我尝试使用新列“rawData”更新集合,如下所示:
db.segments.find({"_id" : ObjectId("4fc79525f65181293930070b")}).forEach(function(data) {
db.segments.update(
{_id:data._id},
{$set:{ "rawData" : data.package.toString() }}
);
});
在我做对之前,我将查找限制在一个文档中。不幸的是 toString 并没有达到我期望的效果。
另外,我试过这个:
db.segments.find({"_id" : ObjectId("4fc79525f65181293930070b")}).forEach(function(data){
data.package = new String(data.package);
db.segments.save(data);
});
结果更糟。
如果我用 php 读取文档,$response = $db->execute('return db.segments.findOne()');
那么print_r($response)
,我可以验证数据是否正确存储,如 base64。
我在任何地方都找不到解决方案,也许是因为没有人需要做像这样愚蠢的事情。