【发布时间】:2014-10-20 06:24:03
【问题描述】:
我像这样运行我的 mongo shell 脚本:
mongo --quiet myscript.js > /tmp/my.json
我在 myscript.js 中使用 printjson。 mongodb printjson 会输出 ObjectId 到my.json,像这样:
"_id" : ObjectId("5444a932ca62bbcba14a1082")
我从 mongo shell 中读取了一些源代码。 printjson 将为 ObjectId 对象运行此代码。
> x._id.tojson
function (){
return this.toString();
}
在 mongo 2.2 版本之后,ObjectId("507c7f79bcf86cd7994f6c0e").toString() 将返回以下字符串:
ObjectId("507c7f79bcf86cd7994f6c0e")
这不是我想要的。我用ObjectId("507c7f79bcf86cd7994f6c0e").valueOf()。
这将返回以下字符串:
507c7f79bcf86cd7994f6c0e
最后,我在myscript.js中添加一行:
ObjectId.prototype.toString = function() { return '"' + this.valueOf() + '"'; }
我解决了我的问题。但我不喜欢更改toString() 的原始行为。
有没有更好的解决方案?
【问题讨论】:
标签: json mongodb tostring mongo-shell