MongoDB aggregate() - 错误“TypeError: 无法调用未定义的方法'forEach
MongoDB aggregate() - error "TypeError: Cannot call method 'forEach' of undefined"
我在"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);
我通过以下方式从命令提示符运行它
蒙戈脚本.js>>出来.txt
在文件"out.txt"中,我有错误
类型错误:无法在脚本中调用未定义的方法"forEach.js
同样的问题,当我从 mongo shell mongo 运行脚本时.exe(通过使用 load())。
当我从 Robomongo 0.8.4 运行相同的聚合命令时,我得到了成功的结果(3 个 json 格式的文档)。有谁知道,为什么会发生这种情况?
Mongodb 版本 2.6.5
您需要
在没有result
变量访问的情况下运行它。在shell
中访问时由mongodb返回的cursor
没有名为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);
相关文章:
- 骨干's Router.execute(callback,args,name)方法获取未定义的名称
- React路由器错误-'无法调用方法'getRouteAtDepth'的未定义'
- 使用javascript ajax post方法的未定义偏移PHP错误
- jQuery验证器添加方法未定义
- 定义的静态方法未定义
- jQuery Validate() 和 Valid() 方法未定义或不起作用
- 为什么内部函数中当前对象的方法未定义
- 如何解决“不能调用方法...未定义“错误
- 得到"无法调用方法..未定义的“;JavaScript和Mustache出现错误
- JavaScript方法未定义
- initialize()方法未定义
- ExpressJS PUT方法未定义的对象问题
- JavaScript - Prototype方法未定义
- 映射内匿名函数内的方法未定义
- 在事件处理程序中调用方法未定义
- 在setTimeOut函数中传递多个参数会抛出Uncaught ReferenceError:方法未定义(匿名函数)
- Javascript对象方法未定义
- app()方法未定义
- 未捕获的类型错误:不能调用方法'未定义使用Ckeditor
- QuickTime对象的SetURL方法未定义