MongoDB aggregate() - 错误“TypeError: 无法调用未定义的方法'forEach&#

MongoDB aggregate() - error "TypeError: Cannot call method 'forEach' of undefined"

本文关键字:方法 未定义 调用 forEach aggregate 错误 TypeError MongoDB      更新时间:2023-09-26

我在"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);