如何使用 Shell 脚本将类型 4 的二进制字段转换为类型 0?
我想过像这样运行简单的脚本
db.places.find({}).forEach(function(data) {
// How do I get to data ?
print(data.id);
// db.places.update(....)
});
但我不知道如何获取二进制数据,所以我可以构造新的二进制。Object.keys()
显示只有两个字段:type
和len
如何使用 Shell 脚本将类型 4 的二进制字段转换为类型 0?
我想过像这样运行简单的脚本
db.places.find({}).forEach(function(data) {
// How do I get to data ?
print(data.id);
// db.places.update(....)
});
但我不知道如何获取二进制数据,所以我可以构造新的二进制。Object.keys()
显示只有两个字段:type
和len
你不能强制类型。我不太明白您为什么要这样做,但是您可以重写文档以强制使用新类型:
db.places.insert( { id: new BinData( 0x04, "SEVMTE8=" ) } );
db.places.find();
{ "_id" : ObjectId("5204c4f252d346a74dd17755"), "id" : BinData(4,"SEVMTE8=") }
因此,对于您的脚本,您可以这样做:
db.places.find({}).forEach(function(data) {
bindata = data.id.base64();
db.places.update( { _id: data._id }, { $set: { id : new BinData(0, bindata) } } );
});