我在“script.js”中有以下脚本
conn = new Mongo();
db = conn.getDB("learn");
db.contracts.aggregate([
{ $match: { regionCode: '77' } },
{ $unwind: '$products' },
{
$project: {
_id: '$_id',
regNum: '$regNum',
prodName: '$products.name',
prodPrice: '$products.price'
}
},
{ $match: { 'prodName' : 'Water' } }
], {cursor:{}}).result.forEach(printjson);
我通过以下方式从命令提示符运行它
mongo script.js>> out.txt
在文件“out.txt”中我有错误
TypeError:无法在script.js中调用未定义的方法'forEach'
同样的问题,当我从mongo shell mongo.exe运行脚本时(通过使用load())。
当我从Robomongo 0.8.4运行相同的聚合命令时,我得到了成功的结果(3个json格式的文档)。有谁知道,为什么会发生这种情况?
Mongodb 2.6.5版
答案 0 :(得分:3)
您需要在没有result
变量访问权限的情况下运行它。 mongodb在cursor
中访问时返回的shell
没有名为result
的属性,因此您会收到错误。
db.contracts.aggregate([
{ $match: { regionCode: '77' } },
{ $unwind: '$products' },
{
$project: {
_id: '$_id',
regNum: '$regNum',
prodName: '$products.name',
prodPrice: '$products.price'
}
},
{ $match: { 'prodName' : 'Water' } }
], {cursor:{}}).forEach(printjson);