MongoDB - 游标行为不一致

时间:2014-01-31 23:43:08

标签: javascript mongodb shell

有人能解释一下吗?

    [test] 2014-01-31 18:40:36.243 >>> var rowNEW = db.people.find( { "name" : "joe", "age" : 20} );
    [test] 2014-01-31 18:40:42.853 >>> rowNEW.forEach(function() { print ('FOUND ROW'); } );
    FOUND ROW
    [test] 2014-01-31 18:40:47.163 >>> rowNEW = db.people.find( { "name" : "joe", "age" : 20} );
    { "_id" : ObjectId("52ec316d1d21069b6061b554"), "name" : "joe", "age" : 20 }
    [test] 2014-01-31 18:40:55.73 >>> rowNEW.forEach(function() { print ('FOUND ROW'); } );
    [test] 2014-01-31 18:40:57.533 >>>

第一次打印出'FOUND ROW' 第二次'FOUND ROW'未打印 这对我来说非常出乎意料和奇怪 为什么它会这样?

1 个答案:

答案 0 :(得分:4)

如果没有var左侧newRow,则在shell中进行评估。这是一个REPL,这就是你在下一行看到JSON的原因。这也将光标向前移动一步,因此当您下次尝试访问newRow时,光标位于结果的末尾。

使用var来避免评估。