8

我让js文件mongodb在我得到console.log调试表达式的地方运行:

use test;
db.city.find().snapshot().forEach(function(city){
    var Pos = city.Pos;

    if (Pos) 
    {
        longLat = Pos.split(" ");
        console.log("longLat");  // for debugging ----------------------------  
        console.log(longLat);

        lon = longLat[0];
        lat = longLat[1];

        if (lon && lat)
        {
            lon = parseFloat(lon);
            lat = parseFloat(lat);
            longLat = [lon, lat];
            city.longLat = longLat;

        }

    }
    db.orgs.save(city);

})

当我运行它...

mongo < /path/to/this/js/file.js

...我在输出中遇到错误:

ReferenceError: console is not defined

有没有办法记录中间结果以进行调试?

4

2 回答 2

10

请改用printorprintjson方法。这些用于像 shell 中的 console.log() 一样发出:

    if (Pos) 
    {
        longLat = Pos.split(" ");
        print("longLat");  // for debugging ----------------------------  
        printjson(longLat);
于 2014-09-04T03:34:37.653 回答
0

如果您不想更改代码,则可以这样做。

var console = {};
console.log = print;

然后当您的代码调用console.log 时,它实际上是在调用print()。但这不是真正的替代品,因为它不像 NodeJS 的 console.log() 那样处理对象的打印。例如,

console.log('abc', { 'field1' : 123 });
// In NodeJS output is: abc { field1: 123 }
// In Mongo print output is: abc [object Object]

一个更全功能的实现将处理这个问题。如果您想创建功能更全面的实现,这篇文章接管 console.log可能会有所帮助。

于 2018-06-12T19:50:06.407 回答