Я бег моего сценария Монго оболочки, как это:MongoDB printjson будет выводить ObjectId на результат, который не может быть использован для JSON.parse
mongo --quiet myscript.js > /tmp/my.json
Я использую printjson
в myscript.js. MongoDB printjson будет выводить ObjectId в my.json
, как это:
"_id" : ObjectId("5444a932ca62bbcba14a1082")
Я читал некоторые исходный код из Монго оболочки. printjson
запустит этот код для объекта ObjectId.
> x._id.tojson
function(){
return this.toString();
}
после Монго версии 2.2, ObjectId("507c7f79bcf86cd7994f6c0e").toString()
возвращает следующую строку:
ObjectId("507c7f79bcf86cd7994f6c0e")
Это не я хочу. Я использую ObjectId("507c7f79bcf86cd7994f6c0e").valueOf()
.
Это возвращает следующую строку:
507c7f79bcf86cd7994f6c0e
наконец, добавить одну строку в myscript.js
:
ObjectId.prototype.toString = function() { return '"' + this.valueOf() + '"'; }
я решил мою проблему. но мне не нравится изменять исходное поведение toString()
. Есть ли лучшие решения?
Если у меня встроенный документ, ваш метод правильный выбор? – lutaoact