0

如何使用 Shell 脚本将类型 4 的二进制字段转换为类型 0?

我想过像这样运行简单的脚本

db.places.find({}).forEach(function(data) {
    // How do I get to data ?
    print(data.id); 
    // db.places.update(....)
});

但我不知道如何获取二进制数据,所以我可以构造新的二进制。Object.keys()显示只有两个字段:typelen

4

1 回答 1

1

你不能强制类型。我不太明白您为什么要这样做,但是您可以重写文档以强制使用新类型:

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) } } );
});
于 2013-08-09T10:36:52.867 回答